输出链表倒数第K个元素的节点值

#include <stdlib.h>
#include <string.h>
#include <stdio.h>


typedef struct _ListNode{
	int data;
	struct _ListNode *next;
}ListNode; 

ListNode* LinkList_Create(int *value,int len)
{
	ListNode *pHead = (ListNode*)malloc(sizeof(ListNode));
	ListNode *pTail = pHead;
	for(int i=0; i < len; i++)
	{
		ListNode *pCur = (ListNode*)malloc(sizeof(ListNode)) ;
		pCur->data = value[i];
		pTail->next = pCur;
		pTail = pCur; 
	}
	pTail->next = NULL;
	return pHead; 
	
}
void ShowNode(ListNode* head) 
{
    ListNode* p = head->next;
    for(;p;p = p->next) printf("%d ",p->data);
    printf("\n");
}

int FindKthtoList(ListNode *pHead,int k)
{
	ListNode *p=pHead->next;
	ListNode *q=pHead->next;
	while(k>1)
	{
		p = p->next;	
		k--;
	}	
	if(p==NULL)
	{
		return -1;
	}
	while(p->next!=NULL)
	{
		p = p->next;
		q = q->next;
	}	
	return q->data;
}


int main()
{
	int data[7] = {2,3,6,4,5,7,9};
 	ListNode* pHead = LinkList_Create(data,7);
 	ShowNode(pHead);
	int ret = FindKthtoList(pHead,3) ;
	printf("%d\n",ret);
	return 0;
}
上一篇:55 链表中环的入口结点


下一篇:链表中环的入口结点(剑指offer)