#include<iostream>
using namespace std;
struct node //创建节点
{
int date;
node *next;
};
int main()
{
node *head; //创建头结点
head=NULL;
int x=1,y1=0; //y1为判断链表现有长度的参数
node *p,*s;
while(x<9) //自动创建数据为1-8的链表
{
s=new node(); //动态分配新的节点
s->date=x; //给新节点的数据赋值
if(head==NULL) //如果没有头结点则将第一个新节点作为头结点
{ s->next=NULL;
p=head=s;}
else
{ s->next=head; //将新节点的下一个节点设为头结点
p->next=s; //将新节点设为链表尾部的下一个节点
p=p->next;}
++x;++y1;}
cout<<"链表为:"; //打印链表
p=head;
cout<<p->date<<" "; //打印头结点
p=p->next; //节点后移一个
for(;p!=head&&p!=NULL;p=p->next) //当节点不是头结点或者节点不为空(避免链表只有一个头结点)时打印该节点的数据,然后将节点后移一个
cout<<p->date<<" ";
cout<<endl;
while(1) //在链表中查询存储该数据的节点的下一个节点所存储的数据
{
int y,y2=1; //y2为已遍历链表的长度
cin>>y; //输入需要查询的节点
for(p=head;p->next!=head&&p->next!=NULL;p=p->next) //当节点的下一个节点不是头结点或者不为空时(避免链表只有一个头结点)执行查询程序,然后节点后移一位
{
if(y==p->date) //当查询的数据与当前节点所存储的数据一致时 退出for循环
break;
++y2;
}
if(y1==y2) //若遍历链表查询不到所输入的数据
cout<<"链表中没有你所输入的数据!!!"<<endl;
else
{ p=p->next;
cout<<"下一个为:"<<p->date<<endl;}
}
return 0;
}
using namespace std;
struct node //创建节点
{
int date;
node *next;
};
int main()
{
node *head; //创建头结点
head=NULL;
int x=1,y1=0; //y1为判断链表现有长度的参数
node *p,*s;
while(x<9) //自动创建数据为1-8的链表
{
s=new node(); //动态分配新的节点
s->date=x; //给新节点的数据赋值
if(head==NULL) //如果没有头结点则将第一个新节点作为头结点
{ s->next=NULL;
p=head=s;}
else
{ s->next=head; //将新节点的下一个节点设为头结点
p->next=s; //将新节点设为链表尾部的下一个节点
p=p->next;}
++x;++y1;}
cout<<"链表为:"; //打印链表
p=head;
cout<<p->date<<" "; //打印头结点
p=p->next; //节点后移一个
for(;p!=head&&p!=NULL;p=p->next) //当节点不是头结点或者节点不为空(避免链表只有一个头结点)时打印该节点的数据,然后将节点后移一个
cout<<p->date<<" ";
cout<<endl;
while(1) //在链表中查询存储该数据的节点的下一个节点所存储的数据
{
int y,y2=1; //y2为已遍历链表的长度
cin>>y; //输入需要查询的节点
for(p=head;p->next!=head&&p->next!=NULL;p=p->next) //当节点的下一个节点不是头结点或者不为空时(避免链表只有一个头结点)执行查询程序,然后节点后移一位
{
if(y==p->date) //当查询的数据与当前节点所存储的数据一致时 退出for循环
break;
++y2;
}
if(y1==y2) //若遍历链表查询不到所输入的数据
cout<<"链表中没有你所输入的数据!!!"<<endl;
else
{ p=p->next;
cout<<"下一个为:"<<p->date<<endl;}
}
return 0;
}