#include<stdio.h>
#include<malloc.h>
typedef struct LNode
{
int data;
struct LNode *next;
}*LinkList;
LinkList Create_List_Tail(int length)
{//建立链表
LNode *L,*s,*r; //L指向头结点,r指向尾结点,s指向新添加结点
L=(LinkList)malloc(sizeof(LNode));
L->next =NULL;//头结点L->data不存东西
r=L;
for(int i=0;i<length;++i)
{
s=(LinkList)malloc(sizeof(LNode));
scanf("%d",&s->data);
r->next =s;
r =s;
}
r->next =NULL;
return L; //返回链表
}
LNode *Find_KthToTail(LinkList L, unsigned int k)
{
if (L->next == NULL || k == 0)
return NULL;
LNode *p1 = L->next;
for(unsigned int i=0;i<k-1;++i)
{
if(p1->next !=NULL)
p1=p1->next ;
else
return NULL;
}
LNode *p2 =L->next ;
while(p1->next !=NULL)
{
p1=p1->next ;
p2=p2->next ;
}
return p2;
}
int main()
{
int length,k;
printf("请输入链表长度:");
scanf("%d",&length);
LinkList L= Create_List_Tail(length);
printf("请输入倒数第几个数字:\n");
scanf("%d",&k);
LNode *p = Find_KthToTail(L,k);
printf("输出倒数第%d个:%d\n",k,p->data);
return 0;
}
剑指offer--面试题22:链表中倒数第k个节点
最新推荐文章于 2020-01-14 09:42:54 发布