線性表是最簡單,最常用的一種資料結構。線性表的邏輯結構是n個資料元素的有限序列(a1,a2,…,an)。而線性表的物理結構,我們已經學習過順序表,也就是陣列 ;另一種線性表的物理結構——鍊錶 。
單鏈表(singly linked list)也稱線性鍊錶。每個元素占用乙個節點(node)。乙個節點至少包含兩個域,乙個域存放資料資訊info,其資料型別由應用問題決定,另乙個存放指向該鍊錶中下乙個節點的指標link。
◆ 1、單鏈表節點的資料型別
typedef int datatype; //節點的資料為整型
struct node
;◆ 2、由節點形成單鏈表
單鏈表的第乙個節點首先通過new運算獲得,並用鍊錶的表頭指標head指向, head在使用中必須妥善儲存,千萬不可丟失,否則單鏈表整個丟失,記憶體也發生洩漏。
……//有關node的宣告,見上段**
node *head;
head=new node;
//第乙個節點的資料不賦值,則該節點僅作head
head->link=null;//指標初始化
單鏈表後面的節點可以通過插入與刪除來維護:只要改變鏈中節點指標的指向,而無需移動表中的元素,就能實現插入和刪除操作。
現在已經存在單鏈表「head」,插新節點時考慮三種情況:
新插入節點作為單鏈表的第乙個結點;
也有可能新插入節點是中間節點;
也有可能新插入節點作為最後乙個節點。
首先要先產生新節點:
……//有關node的宣告
node *newone;
newone=new node;
newone->info=13;//給該節點的資料賦值
newone->link=null;//指標初始化
◆1、新節點插在鏈首(檢視動畫演示)
//注意:鍊錶操作次序非常重要
……//node、head、newone的宣告及定義,見上面
newone->link=head->link;
head->link=newone;//注意指標賦值
◆2、新節點插在單鏈表中間
首先用工作指標p找到指定節點,而讓指標q指向緊跟其後的節點;新節點插在p、q之間;
node *p,*q;
……//此段**實現:利用查詢演算法將p定位在指定節點(稍後將學習)
q=p->link; //注意指標賦值
newone->link=q;
//或newone->link=p->link;這樣就不需要q了
p->link=newone;
單鏈表基本演算法
include include typedef int linktype typedef struct linknodelinklist 鍊錶初始化 void linklistinit linklist head 鍊錶尾部插入 void linklistpushback linklist head,...
c 單鏈表基本操作
下午沒事,看資料結構。想到自畢業以後,都沒有寫過這些東西了。寫個鍊錶基本操作,還沒完全測試。includeusing namespace std node 節點 struct node int data node p 單鏈表 class link 通過陣列夠造 link int arr,int le...
C 單鏈表基本操作
include using namespace std struct node class list 建立帶頭結點的鍊錶,head next null 表示鍊錶為空,只有乙個頭結點 void creatlist1 int n 頭插入法建立鍊錶 void creatlist2 int n 尾插入法建立...