資料結構 線性表學習總結2 單鏈表實現)

2021-10-03 21:52:04 字數 2158 閱讀 9614

一、線性鍊錶的特點和邏輯結構

1、特點:考慮到順序表插入和刪除操作需要移動大量的元素,線性鍊錶可以不連續儲存,原本由陣列相對儲存空間所規定的兩個元素的關係,現在由鍊錶的指標所代替,理解這裡指標所起的關鍵作用至關重要。

2、邏輯結構

如上圖,乙個鍊錶由不必在記憶體中相連的結構構成;每乙個結構包含表元素和指向該元素後繼結構的指標。該指標被稱為next指標,最後乙個next指標指向null;

該結構叫做結點(node):由資料域和指標域構成

3、頭節點和頭指標

如圖,l指向的結點即為頭結點,l即為頭指標

頭節點

二、線性鍊錶的常見操作

1、線性鍊錶用結構指標描述

typedef

int elemtype;

//定義結點型別

typedef

struct node

node,

*linkedlist;

2、單鏈表的初始化

//1、單鏈表的初始化

linkedlist init_linklist()

2、單鏈表的建立,包含頭插法和尾插法

//2、單鏈表的建立,頭插法建立單鏈表

linkedlist create_head_linklist()

return l;

}//3、單鏈表的建立,尾插法建立單鏈表

linkedlist create_tail_linklist()

r->next =

null

;return l;

}

3、單鏈表的插入,在鍊錶的第i個位置插入x的元素

關鍵操作:

p->next = pre->next;

//把pre所指向的傳遞給p

pre->next = p;

//把指向p的指標給pre,即pre現在指向了新結點p

linkedlist insert_linklist

(linkedlist l,

int i,elemtype x)

4、單鏈表的刪除,在鍊錶中刪除值為x的元素

關鍵操作:

pre-next = p->next;

//即pre->next = pre->next->next;逃過了pre-next,x相當於刪除了

linkedlist delete_linklist

(linkedlist l,elemtype x)

pre->next = p->next;

//刪除操作,將其前驅next指向其後繼。

free

(p);

return l;

}

5、整表刪除

/*單鏈表的整表刪除*/

clear_linklist

(linkedlist *l)

l->next =

null

;return l;

}

抓住主要矛盾,搞清楚指標的操作原理是理解的關鍵;

資料結構 線性表之單鏈表

線性表 亦作順序表 是最基本 最簡單 也是最常用的一種資料結構。線性表中資料元素之間的關係是一對一的關係,即除了第乙個和最後乙個資料元素之外,其它資料元素都是首尾相接的。線性表有兩種儲存結構 順序儲存結構,即儲存單元在一段連續的位址上儲存,常見的陣列就是順序儲存結構的線性表 鏈式儲存結構,即儲存單元...

資料結構複習(二)線性表(2)單鏈表

單鏈表定義 實現typedef struct lnodelnode,linklist 優缺點 初始化不帶頭結點 帶頭結點 bool initlist linklist l 帶頭結點頭結點不儲存元素,頭結點之後的結點才開始儲存元素 bool initlist linklist l l next nul...

資料結構C C 線性表和單鏈表

在vs2005下面測試通過.最基本的 code include stdafx.h include include stdio.h include using namespace std typedef int type typedef struct lnodelnode,linklist linkl...