zl程序教程

您现在的位置是:首页 >  后端

当前栏目

C语言实现输出链表中倒数第k个节点

C语言链表节点输出 实现 倒数第
2023-06-13 09:15:46 时间

本文实例展示了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程序算法设计的学习有所帮助。