C++求解单向链表倒数第k个节点
来源:互联网 发布:nancymeng 孟燕 知乎 编辑:程序博客网 时间:2024/05/29 02:16
#include<iostream>
using namespace std;
struct listnode
{
int data;
listnode *next;
};
class linklist
{
private:
listnode *head;
public:
linklist();
void addtolist(int data);
void display();
listnode* Head();
~linklist();
};
linklist::linklist()
{
head=new listnode;
head->next=NULL;
}
void linklist::addtolist(int data)
{
listnode *p,*q;
p=head->next;
q=new listnode;
q->data=data;
head->next=q;
q->next=p;
}
void linklist::display()
{
listnode*p=head->next;
while(p!=NULL)
{
cout<<p->data<<" ";
p=p->next;
}
cout<<endl;
}
linklist::~linklist()
{
listnode *p,*q;
p=head->next;
while(p!=NULL)
{
q=head;
delete q;
p=p->next;
}
delete head;
head=NULL;
p=NULL;
q=NULL;
}
listnode* linklist::Head()
{
listnode *p;
p=head;
return p;
}
//查找链表的倒数第k个节点
listnode* findkthtotail(listnode *plisthead,unsigned int k)
{
if(plisthead->next==NULL)
return NULL;
listnode *pahead=plisthead;
listnode *pbehind=NULL;
for(unsigned int i=0;i<k-1;++i)
{
pahead=pahead->next;
if(pahead->next==NULL)
return NULL;
}
pbehind=plisthead;
while(pahead->next!=NULL)
{
pahead=pahead->next;
pbehind=pbehind->next;
}
return pbehind;
}
int main()
{
linklist list;
list.addtolist(1);
list.addtolist(2);
list.addtolist(3);
list.addtolist(4);
list.addtolist(5);
list.addtolist(6);
list.display ();
cout<<endl;
listnode* p=findkthtotail(list.Head(),7);
if(p!=NULL)
cout<<p->data<<endl;
else
cout<<"wrong"<<endl;
return 0;
}
using namespace std;
struct listnode
{
int data;
listnode *next;
};
class linklist
{
private:
listnode *head;
public:
linklist();
void addtolist(int data);
void display();
listnode* Head();
~linklist();
};
linklist::linklist()
{
head=new listnode;
head->next=NULL;
}
void linklist::addtolist(int data)
{
listnode *p,*q;
p=head->next;
q=new listnode;
q->data=data;
head->next=q;
q->next=p;
}
void linklist::display()
{
listnode*p=head->next;
while(p!=NULL)
{
cout<<p->data<<" ";
p=p->next;
}
cout<<endl;
}
linklist::~linklist()
{
listnode *p,*q;
p=head->next;
while(p!=NULL)
{
q=head;
delete q;
p=p->next;
}
delete head;
head=NULL;
p=NULL;
q=NULL;
}
listnode* linklist::Head()
{
listnode *p;
p=head;
return p;
}
//查找链表的倒数第k个节点
listnode* findkthtotail(listnode *plisthead,unsigned int k)
{
if(plisthead->next==NULL)
return NULL;
listnode *pahead=plisthead;
listnode *pbehind=NULL;
for(unsigned int i=0;i<k-1;++i)
{
pahead=pahead->next;
if(pahead->next==NULL)
return NULL;
}
pbehind=plisthead;
while(pahead->next!=NULL)
{
pahead=pahead->next;
pbehind=pbehind->next;
}
return pbehind;
}
int main()
{
linklist list;
list.addtolist(1);
list.addtolist(2);
list.addtolist(3);
list.addtolist(4);
list.addtolist(5);
list.addtolist(6);
list.display ();
cout<<endl;
listnode* p=findkthtotail(list.Head(),7);
if(p!=NULL)
cout<<p->data<<endl;
else
cout<<"wrong"<<endl;
return 0;
}
0 0
- C++求解单向链表倒数第k个节点
- 输出单向链表倒数第k个节点,倒数第0个指向尾节点.
- 单向链表倒数第K个节点
- 求单向链表倒数第k个节点
- 单向链表_找出倒数第K个节点
- 寻找单向链表的倒数第k个节点
- 单向链表的倒数第k个节点
- C实现简单单向链表,一次遍历查找倒数第k个节点的值
- 求解单链表中倒数第k个节点
- 链表倒数第k个节点
- 链表倒数第k个节点
- 链表倒数第k个节点
- 链表倒数第K个节点
- 链表倒数第k个节点
- 链表倒数第k个节点
- 链表倒数第K个节点
- 面试100题:13.求单向链表倒数第k个节点
- 面试100题:13.求单向链表倒数第k个节点
- 关于IGMP Snooping和IGMP Proxy
- Hdu-1847
- SQL运行突然SESSION中断错误
- Cocos2d-x3.2 ClippingNode裁减节点(模板遮罩)
- 剖析淘宝TDDL
- C++求解单向链表倒数第k个节点
- hdoj 2199 Can you solve this equation? 【二分枚举】
- 【graceup系列】--h2db内嵌数据库demo
- 使用 Bootstrap Typeahead 组件
- 状态栏提示控件的实现原理
- VS2010配置QT
- nginx安装配置
- poj3278~bfs基础题
- struts1工作流程