剑指offer 输出链表倒数第k个结点
2017-11-30 20:30
351 查看
输入一个链表,输出该链表中倒数第k个结点。
想法一:遍历两次链表,第一次记录总结点数,第二次找到倒数第k个结点的位置
想法二:使用两个指针,如果两个指针相距k-1,同时移动,当后指针移动到尾结点,前指针即倒数第k个结点
#include<cstdio>
#include<iostream>
#include<cstdlib>
using namespace std;
typedef struct listnode{
int value;
listnode *next;
}listnode;
listnode*findkth(listnode*phead,int k)
{
if(phead==NULL||k<1)
return NULL;
listnode *first=phead;
listnode *last=phead;
for(int i=0;i<k-1;i++)
{
if(last->next!=NULL)
last=last->next;
else
return NULL;
}
while(last->next!=NULL)
{
first=first->next;
last=last->next;
}
return first;
}
int main()
{
listnode* a=(listnode*)malloc(sizeof(listnode));
a->value=10;
a->next=NULL;
listnode*a1=a;
for(int i=10;i<15;i++)
{
listnode *b=(listnode*)malloc(sizeof(listnode));
b->value=i*2;
b->next=NULL;
a1->next=b;
a1=b;
}
a1=a;
while(a1!=NULL)
{
cout<<a1->value<<" ";
a1=a1->next;
}
cout<<endl;
listnode* k=findkth(a,3);
cout<<k->value<<endl;
return 0;
}
想法一:遍历两次链表,第一次记录总结点数,第二次找到倒数第k个结点的位置
想法二:使用两个指针,如果两个指针相距k-1,同时移动,当后指针移动到尾结点,前指针即倒数第k个结点
#include<cstdio>
#include<iostream>
#include<cstdlib>
using namespace std;
typedef struct listnode{
int value;
listnode *next;
}listnode;
listnode*findkth(listnode*phead,int k)
{
if(phead==NULL||k<1)
return NULL;
listnode *first=phead;
listnode *last=phead;
for(int i=0;i<k-1;i++)
{
if(last->next!=NULL)
last=last->next;
else
return NULL;
}
while(last->next!=NULL)
{
first=first->next;
last=last->next;
}
return first;
}
int main()
{
listnode* a=(listnode*)malloc(sizeof(listnode));
a->value=10;
a->next=NULL;
listnode*a1=a;
for(int i=10;i<15;i++)
{
listnode *b=(listnode*)malloc(sizeof(listnode));
b->value=i*2;
b->next=NULL;
a1->next=b;
a1=b;
}
a1=a;
while(a1!=NULL)
{
cout<<a1->value<<" ";
a1=a1->next;
}
cout<<endl;
listnode* k=findkth(a,3);
cout<<k->value<<endl;
return 0;
}
相关文章推荐
- 剑指Offer 15 输入一个链表,输出该链表中倒数第k个结点
- 剑指offer--输入一个链表,输出该链表中倒数第k个结点。
- 剑指offer:输入一个链表,输出该链表中倒数第k个结点。
- 剑指offer:输入一个链表,输出该链表中倒数第k个结点。
- 剑指offer 之 输出链表的倒数第K个结点
- 剑指offer:输出该链表中倒数第k个结点
- 【剑指Offer面试编程题】题目1517:链表中倒数第k个结点--九度OJ
- 剑指offer-链表中倒数第K个结点
- 剑指offer-链表中倒数第k个结点
- 剑指offer面试第15题:链表中倒数第k个结点
- 剑指offer题15_链表中倒数第k个结点
- 剑指offer--面试题15:链表中倒数第K个结点--Java实现
- 剑指offer【22】求链表倒数第K个结点
- 剑指offer-15:链表中倒数第k个结点
- 剑指Offer之面试题15:链表中倒数第K个结点
- 剑指offer之链表中倒数第k个结点
- 【剑指Offer面试编程题】题目1517:链表中倒数第k个结点--九度OJ
- 【剑指Offer面试题】 九度OJ1517:链表中倒数第k个结点
- (C++)剑指offer-14:链表中倒数第k个结点(代码的鲁棒性)
- 【剑指offer】链表中倒数第k个结点