您的位置:首页 > 职场人生

剑指offer--面试题22:链表中倒数第k个节点

2017-07-15 16:07 344 查看


#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;
}


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: