數據結構 P35 算法實現 循環鏈表的創建與查找

#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;
}
發佈了34 篇原創文章 · 獲贊 5 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章