找出单向链表中的一个节点,该节点到尾指针的距离为K。链表的倒数第0个结点为链表的尾指针。要求时间复杂度为O(n)。
链表结点定义如下:
struct ListNode
{
int m_nKey;
ListNode* m_pNext;
}
链表节点的值初始化为1,2,3,4,5,6,7。
输入描述:
该节点到尾指针的距离K
输出描述:
返回该单向链表的倒数第K个节点,输出节点的值
#include<iostream>
#include<algorithm>
#include<string>
#include<math.h>
#include<stdlib.h>
#include <iostream>
#include<cstring>
#include<cstdio>
using namespace std;
struct ListNode
{
int m_nKey;
ListNode* m_pNext;
};
int main(){
ListNode *head=new ListNode, *p;
p=head;
int a[7]={1,2,3,4,5,6,7};
int k;
cin>>k;
for(int i=0;i<7;i++){
ListNode *temp=new ListNode;
temp->m_pNext=NULL;
temp->m_nKey=a[i];
p->m_pNext=temp;
p=temp;
}
ListNode *pre;
pre=head;
p=head;
for(int i=1;i<k;i++){
// cout<<p->m_nKey<<endl;
if(p->m_pNext==NULL){
cout<<"NULL";
return 0;
}
p=p->m_pNext;
}
while(p->m_pNext!=NULL) {
p=p->m_pNext;
pre=pre->m_pNext;
}
cout<<pre->m_nKey;
return 0;
}