C 單鏈表的基本演算法

2021-08-04 20:16:23 字數 1303 閱讀 9334

線性表是最簡單,最常用的一種資料結構。線性表的邏輯結構是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 尾插入法建立...