数据结构 P35 算法实现 循环链表的创建与查找

30 篇文章 0 订阅
29 篇文章 0 订阅
#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;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值