华为机试——单向链表倒数第k个结点

来源:互联网 发布:汇编语言编程 编辑:程序博客网 时间:2024/06/03 15:35

题目:输出单向链表中倒数第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;//节点数小于k        }    }    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);}
0 0
原创粉丝点击