資料結構 線性表 2 鏈式表

2022-04-27 14:16:29 字數 1858 閱讀 8303

鍊錶(所有元素不考慮相鄰位置,哪有空位就到**鍊錶分為單鏈表/雙鏈表/迴圈鍊錶。

1.獲得鍊錶第i個資料的演算法思路:

1)宣告乙個結點p指向鍊錶第乙個結點,初始化j從1開始;

2)當j3)若到鍊錶末尾p為空,則說明第i個元素不存在;

4)否則查詢成功,返回結點p的資料。

2.單鏈表的插入和刪除

插入

1)宣告乙個結點p指向鍊錶第乙個結點,初始化j從1開始;

2)當j3)若到鍊錶末尾p為空,則說明第i個元素不存在;

4)否則查詢成功,在系統中生成乙個空結點s。

5)將資料元素e賦值給s->data;

6)單鏈表的插入標準語句s->next=p->next; p->next=s;

7)返回成功。

刪除

1)宣告乙個結點p指向鍊錶第乙個結點,初始化j從1開始;

2)當j3)若到鍊錶末尾p為空,則說明第i個元素不存在;

4)否則查詢成功,將欲刪除的結點p->next賦值給q;

5)單鏈表的刪除標準語句p->next=q->next;

6)將q結點中的資料賦值給e,作為返回;

7)釋放q結點;

8)返回成功。

3.單鏈表整表建立的演算法思路:

1)宣告一結點p和計數器變數i

2)初始化一空鍊錶l;

3)讓l的頭結點的指標指向null,即建立乙個帶頭結點的單鏈表;

4)迴圈:

1

///name:linklist

2///

author:ja

3///

date:2015-3-145

67///線性表的單鏈式儲存結構

8 #include9 #include10 #include11

12 typedef struct

lnodelnode, *linklist;

1617 typedef int

elemtype;

18 typedef int

status;

1920 status getelem_l(linklist *l,int i,elemtype &e)

27if (!p || j>i) return

error;

28 e = p->data;

29return

ok;30 }//

getelem_l

3132

//逆位序輸入n個元素的值,建立帶表頭結點的單鏈線性表l

33void creatlist_l(linklist *l, int

n)41 }//

creatlist_l

4243

4445

///在表l中刪除第i個元素,並用e返回其值

46 status listdelete_l(linklist *l, int i, elemtype *e)

51if (!(p->next) || j>i - 1) return

error;

52 q = p->next; p->next = q->next; //

刪除並釋放結點

資料結構 鏈式儲存線性表

鏈式儲存結構的線性表 簡稱為鍊錶 將採用一組位址任意的儲存單元存放線性表中的資料元素,鏈式結構的線性表不會按線性的邏輯順序來儲存資料元素,它需要在每乙個資料元素裡儲存乙個引用下乙個資料元素的引用。優點 插入 刪除元素快,充分利用計算機記憶體空間 缺點 查詢元素需要整體遍歷,空間開銷大 單鏈表 cre...

資料結構 線性表 線性表的靜態鏈式表示

資料結構 線性表的靜態鏈式表示 單鏈表 靜態鍊錶 線性表元素序號從1算起 l 0 專設為頭結點 date 2017 4 14 include include define initsize 100 define elemtype char typedef struct lnodelinklist i...

資料結構 線性表 2

package com.wjy.data structure.linearlist.common public inte ce nodepackage com.wjy.data structure.linearlist.common 單鏈表結點定義 public class slnode imple...