數據結構之單鏈表<尾插法>


單鏈表也稱為線性鏈表或單向鏈表,它是線性表的鏈接存儲表示。

單鏈表的結構第一個結點(亦稱為首元結點)的地址可以通過鏈表的頭指針first找到,其他結點的地址則在前驅結點的link域中,鏈表的最后一個結點沒有后繼,在結點的link域中放一個空指針NULL,NULL在<iostream.h>中被定義為數值0,因此對單鏈表的任一結點的訪問必須首先根據頭指針找到首元結點,再按各節點的link域中存放的指針順序尋找。

頭指針first為空的鏈表為空表,該鏈表一個結點也沒有,相對的,頭指針first不為空且首元結點存在的單鏈表為非空表,表中至少有一個節點。

單鏈表的結構定義

1 typedef int DataType;
2 typedef struct node
3 {
4      DataType data;
5      struct node* link;
6 }LinkNode,* LinkList

尾插法創建一個單鏈表

 1 #include<stdlib.h>
 2 #include<iostream.h>
 3 using namespace std;
 4 void  insertRear(LinkList& first,LinkNode* & last,DataType endTag)
 5 {
 6  //endTag是約定的輸入序列結束的標志,如果輸入序列是正整數,endTag可以使0或負數
 7 //如果輸入序列是字符,endTag可以是字符集中不會出現的字符如"\0"
 8        DataType val;cin>>val;
 9      if(val==endTag)  last->link=NULL;
10       else
11 {
12     last=new LinkNode;
13      if(!last)
14          {
15              cerr<<"存儲分配錯誤!\n";exit(1); 
16           }
17       last->data=val;  
18       insertRear(first,last->link,endTag);
19 }
20 };
21 
22 int main()
23 {
24    LinkList L=new LinkNode;
25    if(!L)  {cerr<<"存儲分配錯誤!\n";exit(1);}
26    cin>>L->data;
27    LinkNode* rear=L;
28    insertRear(L,rear->link,L->data);
29    return 0;
30 }

在程序中還設置一個尾指針last,它總是指向新建表中最后一個結點,新結點鏈接到它所鏈尾的后面。last設定為引用型指針,它要把新建結點地址或是空地址傳送到前一結點的link域中。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM