單向連結串列的建立與遍歷
阿新 • • 發佈:2019-01-23
#include <iostream> using namespace std; class list { public: int num,score; char name[10]; class list *next; }; typedef class list node; typedef node *link; int main() { link newnode,ptr,delptr; //宣告三個連結串列結構的指標 cout<<"請輸入 5 位學生的資料:"<<endl; delptr=new node; //delptr暫當連結串列頭指標 if (!delptr) { cout<<"[Error!!記憶體分配失敗!]"<<endl; exit(1); } cout<<"請輸入座號:"; cin>>delptr->num; cout<<"請輸入姓名:"; cin>>delptr->name; cout<<"請輸入成績:"; cin>>delptr->score; ptr=delptr; //保留連結串列頭指標,以ptr為指向當前節點的指標 for (int i=1;i<5;i++) { newnode=new node; //建立新節點 if(!newnode) { cout<<"[Error!!記憶體分配失敗!"<<endl; exit(1); } cout<<"請輸入座號:"; cin>>newnode->num; cout<<"請輸入姓名:"; cin>>newnode->name; cout<<"請輸入成績:"; cin>>newnode->score; newnode->next=NULL; ptr->next=newnode; //把新節點加在連結串列後面 ptr=ptr->next; //讓ptr保持在連結串列的最後面 } cout<<"\n 學 生 成 績"<<endl; cout<<" 座號\t姓名\t成績\n====================="<<endl; ptr=delptr; //讓ptr回到連結串列頭 while(ptr!=NULL) { cout<<ptr->num<<"\t"<<ptr->name<<"\t"<<ptr->score<<endl; delptr=ptr; ptr=ptr->next; //ptr按序往後遍歷整個連結串列 delete delptr; //釋放記憶體空間 } system("pause"); }