單鏈表定義
實現
typedef
struct lnodelnode,
* linklist;
優缺點
初始化不帶頭結點
//帶頭結點
bool
initlist
(linklist &l)
帶頭結點頭結點不儲存元素,頭結點之後的結點才開始儲存元素
bool
initlist
(linklist &l)
l->next = null;
return
true
;}
插入
1.按位序插入
帶頭結點
o(n)
bool
listinsert
(linklist &l,
int i,elemtype e)
if(p==
null
)return
false
; lnode *s=
(lnode *
)malloc
(sizeod
(lnode));
s->data=e;
s->next=p-
>next;
p->next=s;
return
true
;}
不帶頭結點
插入第乙個結點的操作與其他不同
bool
listinsert
(linklist &l,
int i ,elemtype e)
lnode *p;
int j =0;
while
(p!=
null
&& jif(p==
null
) lnode *s =
(lnode *
)malloc
(sizeof
(lnode));
s->data=e;
s->next=p-next;
p->next=s;
return
true
;}
指定結點的後插操作
在結點p後插入元素e
bool
insertnextnode
(lnode *p,elemtype e)
在指定結點前面插入前插
o(1)
將新加入的結點插到p後面,然後將s->data賦值為p->data,p->data賦值為e
bool
insertpriornode
(lnode *p, elemtype e)
刪除
按照位序刪除
帶有頭結點
bool
listdelete
(linklist &l,
int i,elemtype &e)
if(p==
null
|| p-
>next ==
null
)return
false
; lnode *q = p-
>next;
//q指向被刪除的結點
e = q-
>data;
//用e返回元素的值
p->next = q-
>next;
//跳過q指向原來q的下乙個元素
free
(q)//釋放資源
return
true
;}
o(n)
單鏈表沒辦法逆向檢索
查按位查詢
lnode *
getelem
(linklist l,
int i)
return p;
}
o(n)
按值查詢
lnode *
getelembyvalue
(linklist l,elemtype e)
return p;
}
尾插法==設定乙個指向表尾結點的指標
頭插法
typedef
struct dnodednode,
*dlinklist;
p後面加上s結點
bool
insertnextdnode
(dnode *p,dnode *s)
bool
dletenextdnode
(dnode *p)
單鏈表的最後乙個結點的指標指向null
迴圈鍊錶的最後䘝結點的指標指向頭結點
迴圈雙鏈表中的prior指標指向尾結點,next指向頭結點
如何判空
迴圈單鏈表:head.next==head
bool
empty
(linklist l)
else
return
false
;}
迴圈雙鏈表:head.nexthead && head.priorhead
bool
empty
(dlinklist l)
如何判斷結點p是否是表尾/表頭結點
//單鏈表判斷尾結點
表頭:if(current.next ==l)
//判斷雙鏈表的表尾
if(current.next ==l)
如何在表頭、表中、表尾插入/刪除結點(書)
bool
initlist
(linklist &l)
bool
initdlinklist
(dlinklist &l)
定義靜態鍊錶==容量不可以改#define maxsize 10
struct node
;void
testdlinklist()
;}
查詢n(n)
插入位序為i的結點
1.找到乙個空的結點,存入資料元素
2.從頭結點出發找到位序為i1的結點
3.修改新結點的next
4.修改i-1號結點的next
適用場景
1.不支援指標的低階語言
2.資料元素數量固定不變的場景eg:檔案分配表fat
順序表的優點:支援隨機訪問,儲存密度高
缺點:大片連續空間分配不方便,改變容量不方便
鍊錶的優點:離散的小空間分配方便,改變容量方便
缺點:不可隨機訪問,儲存密度低
資料結構複習二 線性表
寫在前面 考完離散就剩兩天覆習資料結構,還有七章,我可能要沒了 衝衝衝!定義是 由n 0 個資料特性相同的元素構成的有限序列n 0時為空表 非空線性結構的特點 1 第乙個 元素唯一 2 最後乙個 元素唯一 3 除第乙個之外,資料結構中的每個資料元素均只有乙個前驅 4 除最後乙個之外,每個資料元素均只...
資料結構(二) 線性表
線性表是最簡單最常用的資料結構,是一種典型的線性儲存結構。定義 線性表是由n n 0 個資料元素 結點 a1 a 2 an 組成的有限序列。n為表的長度。當n 0,為 空表 n 0時,為 a1,a 2,an 邏輯特徵 非空的線性表只有乙個頭結點,也只有乙個終結點,頭結點只有乙個直接後繼結點,而沒有直...
資料結構複習(二)線性表(1)順序表
0.1 線性表定義 具有相同資料型別的n個資料元素的有限序列 一般表示為l a1,a2,a3 an 注意點 儲存資料型別都是相同的 是有限的 是乙個序列,即儲存的內容是有次序的 0.2前驅與後繼 除第乙個元素 表頭元素 外,每個元素都有且僅有乙個前驅。除最後乙個元素 表尾元素 外,每隔元素都有且僅有...