鍊錶(所有元素不考慮相鄰位置,哪有空位就到**鍊錶分為單鏈表/雙鏈表/迴圈鍊錶。
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...