题目:输出单向链表中倒数第k个结点
输入一个单线链表,输出该链表中倒数第k个结点,链表的倒数第0个结点为链表的尾指针。
#include<iostream>
using namespace std;
struct LNode
{
int m_data;
LNode* m_pNext;
};
LNode* FindKthToTail(LNode* pListHead,int k)
{
if(pListHead==NULL||k<=0)
return NULL;
LNode *pAhead=pListHead;
LNode *pBehind=pListHead;
for(int i=0;i<k-1;i++)
{
if(pAhead->m_pNext!=NULL)
{
pAhead=pAhead->m_pNext;
}
else
{
return NULL;
}
}
while(pAhead->m_pNext!=NULL)
{
pAhead=pAhead->m_pNext;
pBehind=pBehind->m_pNext;
}
return pBehind;
}
void main()
{
LNode *p,*q,*p1;
int num,k;
cin>>num;
p=new LNode;
p->m_pNext=NULL;
p1=p;
for(int i=0;i<num;i++)
{
q=new LNode;
cin>>q->m_data;
p->m_pNext=q;
p=q;
}
p->m_pNext=NULL;
cin>>k;
LNode *head=p1->m_pNext;
FindKthToTail(head,k);
}