演算法與資料結構1800題 之線性表 (三)

QisMe發表於2018-08-06

演算法與資料結構1800題 之線性表 (三)
n-i

演算法與資料結構1800題 之線性表 (三)

演算法與資料結構1800題 之線性表 (三)
演算法與資料結構1800題 之線性表 (三)
順序

演算法與資料結構1800題 之線性表 (三)

演算法與資料結構1800題 之線性表 (三)

演算法與資料結構1800題 之線性表 (三)
順序表,複雜度為O(n)
連結串列,複雜度為O(1)

演算法與資料結構1800題 之線性表 (三)

演算法與資料結構1800題 之線性表 (三)

演算法與資料結構1800題 之線性表 (三)
如果是直接插入的話,是無法做到的,因為不知道p節點的前序指標,
但是可以通過:現將s節點插入到p節點的後面,然後再交換p節點與s節點的資料的方式來實現"插入"
即: s->next = p->next;
p->next = s;
s->data <--> p->data

演算法與資料結構1800題 之線性表 (三)
L->next = L->prior = L

帶有頭結點的雙向迴圈連結串列L為空標的條件是: L的next 和 prior都為L

演算法與資料結構1800題 之線性表 (三)
q = p->next;
free(q);
演算法與資料結構1800題 之線性表 (三)
py->next = px -> next;
px->next = py;

演算法與資料結構1800題 之線性表 (三)
演算法與資料結構1800題 之線性表 (三)
L -> next -> next = L && L->next != L
L -> next != L,是為了防止出現只有一個頭結點的情況
演算法與資料結構1800題 之線性表 (三)
演算法與資料結構1800題 之線性表 (三)
O(1)
在值為x的節點之後插入節點,需要找到值為x的節點,時間複雜度為O(n),然後插入節點,時間複雜度為O(1)

演算法與資料結構1800題 之線性表 (三)
單連結串列,雙連結串列
根據指標的連線方式,將連結串列分為:動態連結串列,靜態連結串列

演算法與資料結構1800題 之線性表 (三)
f->next = p->next;
f->prior = p;
p->next->prior = f;
p->next = f;

演算法與資料結構1800題 之線性表 (三)
指標

演算法與資料結構1800題 之線性表 (三)
節點在物理儲存上的相鄰關係
演算法與資料結構1800題 之線性表 (三)
4(待插入節點的兩個指標也計算在內) , 2(待插入節點的一個指標也計算在內)
演算法與資料結構1800題 之線性表 (三)
從任意節點出發,都能訪問到連結串列的全部元素
演算法與資料結構1800題 之線性表 (三)
L->next->next == L && L->prior->prior == L && L ->next != L
演算法與資料結構1800題 之線性表 (三)
p->next != null

演算法與資料結構1800題 之線性表 (三)
L->next == L && L->prior == L
演算法與資料結構1800題 之線性表 (三)
將連結串列listb連線在lista的尾部, for迴圈的作用是將p指向lista的最後一個節點
演算法與資料結構1800題 之線性表 (三)
BEI
FHDA

演算法與資料結構1800題 之線性表 (三)
視訊講解連線:https://www.bilibili.com/video/av843754?from=search&seid=16128174079900509637
連結串列的反轉:

演算法與資料結構1800題 之線性表 (三)

演算法與資料結構1800題 之線性表 (三)
p->next->next == L
演算法與資料結構1800題 之線性表 (三)
相鄰元素相比較,逆序交換,演算法結束時,最大元素調整到連結串列的末尾
12 7 10 5 9 15
演算法與資料結構1800題 之線性表 (三)

演算法與資料結構1800題 之線性表 (三)
重點在於: 不是將h節點當做迴圈指標,而是將h->next節點當做迴圈的指標
h->next節點,p節點,q節點,三個指標實現了反轉,最後同樣形成了一個帶有頭結點的連結串列
演算法與資料結構1800題 之線性表 (三)

演算法與資料結構1800題 之線性表 (三)

演算法與資料結構1800題 之線性表 (三)
q指標的作用就是始終指向pa節點的前序節點,僅僅是為了在遇到常數的時候,刪除pa節點用的,因為這個時候,需要呼叫free(pa),就需要知道前序節點,而對於正常的情況(求導之前不為0),是不需要pa的
題中說了頭結點,就一定有頭結點,而且頭指標一定指向頭結點,頭結點是沒有資料的,本題為迴圈連結串列,有頭結點,所以第一個資料從頭結點的下一個節點開始,且while迴圈的終止條件為,當pa != 頭結點

演算法與資料結構1800題 之線性表 (三)
演算法與資料結構1800題 之線性表 (三)
演算法與資料結構1800題 之線性表 (三)
演算法與資料結構1800題 之線性表 (三)
演算法與資料結構1800題 之線性表 (三)

相關文章