C语言实现输出链表中倒数第k个节点
本文实例展示了C++实现输出链表中倒数第k个节点的方法,分享给大家供大家参考之用。
运行本文所述实例可实现输入一个单向链表,输出该链表中倒数第k个节点。
具体实现方法如下:
/*
*Copyright(c)2011alexingcool.AllRightsReserved.
*/
#include<iostream>
usingnamespacestd;
intarray[]={5,7,6,9,11,10,8};
constintsize=sizeofarray/sizeof*array;
structNode
{
Node(inti=0,Node*n=NULL):item(i),next(n){}
intitem;
Node*next;
};
Node*construct(int(&array)[size])
{
Nodedummy;
Node*head=&dummy;
for(inti=0;i<size;i++){
Node*temp=newNode(array[i]);
head->next=temp;
head=temp;
}
returndummy.next;
}
voidprint(Node*head)
{
while(head){
cout<<head->item<<"";
head=head->next;
}
}
Node*findKnode(Node*head,intk)
{
Node*pKnode=head;
if(head==NULL){
cout<<"linkisnull"<<endl;
returnNULL;
}
while(k--){
if(head==NULL){
cout<<"kisbiggerthanthelengthofthelink"<<endl;
returnNULL;
}
head=head->next;
}
while(head){
head=head->next;
pKnode=pKnode->next;
}
returnpKnode;
}
voidmain()
{
Node*head=construct(array);
cout<<"sourcelink:";
print(head);
cout<<endl;
Node*kNode=findKnode(head,5);
if(kNode!=NULL)
cout<<"theknodeis:"<<kNode->item<<endl;
}
测试用例如下:
1.NULLLink
head=NULL;
2.normalLink,withnormalk
k<=len(head);
3.normalLink,withinvalidk
k>len(head)
希望本文所述对大家C程序算法设计的学习有所帮助。