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;
}