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程序算法设计的学习有所帮助。