.
串列結構
佇列結構
堆疊結構
樹狀結構
陣列可以隨機(Random)存取其元素(Element)
陣列設計時,資料結構簡單
鏈結串列需要額外的Link空間需求
陣列中元素刪除或加入資料只需移動小量資料
在現有資料中間插入一筆資料
從現有資料中刪除一筆資料
隨機讀取任一元素的資料
以上處理效率皆不如陣列
陣列可以隨機(Random)存取其元素
陣列宣告大小之後, 不能在執行中任意加大宣告空間
陣列結構的搜尋速度會比鏈結串列快
鏈結串列進行元素的插入或刪除時, 其速度比陣列慢
做Insertion時,鏈結串列較快
做Deletion時,鏈結串列較快
做Search時,鏈結串列較快
找第k大的資料,Array較快
不必佔用連續記憶體位置
比Array浪費記憶體空間
隨機存取功能比Array弱
插入與刪除時,需移動大量資料
串列分裂、合併容易
Insert/Delete元素較易
佔用非連續記憶體空間
可靠度低
在現有資料中間插入一筆資料
從現有資料中刪除一筆資料
隨機讀取任一元素的資料
以上處理效率皆不如陣列
記憶體不須事先宣告
程式較簡單
插入/刪除時間複雜度較低
串列分裂、合併容易
malloc( )
free( )
sizeof( )
delete
new
free
delete
以上皆非
malloc( )
free( )
new
delete
malloc( )
free( )
new
delete
靜態加入、刪除及合併時,必須做大量資料的移動
靜態比較浪費記憶體空間
動態加入、刪除及合併時,只須要改變指標即可
動態不可以直接存取
加入、刪除及合併時,必須做大量資料的移動
比較浪費記憶體空間,因為必須要多出一個指標
加入、刪除及合併時,只須要改變指標即可
不可以直接存取
比較省記憶體空間
可以直接存取
可進行二分法搜尋
加入、刪除及合併時,只須要改變指標即可
最不適法
最適法
先適法
以上皆是
最不適法
最適法
先適法
以上皆是
5
4
3
2
0
1
2
3
一個資料欄(Data)和兩個指標欄組成
一個資料欄(Data)和一個指標欄組成
比雙向鏈結串列較節省空間
當鏈結斷落時無法修護,將造成資料之遺失。
一個資料欄(Data)和兩個指標欄組成
一個資料欄(Data)和一個指標欄組成
比單向鏈結串列較浪費空間
當一方向之鏈結斷落時可以用另一方向之鏈結來修復之。
環狀鏈結串列
多向鏈結串列
雙向鏈結串列
單向鏈結串列
資料欄與指標欄
前端欄與後端欄
資料欄與左右指標欄
以上皆非
Random( )
Create( )
NewNode( )
以上皆是
list→data=10; list→link=NULL;
list[data]=10; list[link]=NULL;
list(data)=10; list(link)=NULL;
以上皆可
free(First);
free(Head);
Head =First->link; free(First);
Head->link=First->link; free(First);
pt->link=Mid->link; free(Mid);
pt=Mid->link; free(Mid);
free(Mid);
free(pt);
pt=Mid->link; free(Mid);
pt->link=Tail->link; free(Tail);
free(Tail);
free(pt);
head->link=R;
R->link=head; head=R;
head=R; R->link=head->link;
R->link=head->link; head=R;
R=Q
R=P
R->link=P->link;
P->link=R
R=Q
R=P
R->link=P->link;
P->link=R
在使用之前必須要先宣告陣列的大小
不考慮堆疊或佇列被放滿的情況。
鏈結堆疊指利用鏈結串列來呈現的一種堆疊
鏈結佇列指利用鏈結串列來呈現的一種佇列
在使用之前必須要先宣告陣列的大小
具有後進先出(LIFO)
具有先進先出(FIFO)
不考慮堆疊被放滿的情況
X[data]=item;X[link]=Top;Top=X;
X =item;link=Top;Top=X;
X→data=item;X→link=Top;Top=X;
以上皆可
X=TopTop=Top->link;free(X);
X=Top;Top= link;free(X);
X=Top;X=Top;
以上皆可
X[data]=item;X[link]=null;Rear[link]=X;rear=X;
X=item;X->link=null;rear=X;
X->data=item;X->link=null;rear->link=X;rear=X;
以上皆可
X=frontfront=front->linkfree(X)
X=frontfront=front->link
X=frontfront=linkfree(X)
以上皆可
第一個節點
第二個節點
最後一節點
null
tail = head;
tail->next = head;
tail[next]=head;
null
newnode->next = headtail->next=newnodehead=newnode;
newnode[next] = headTail[next]=newnodehead=newnode;
newnode(next) = headTail(next)=newnodehead=newnode;
newnode->next = headtail=newnodehead=newnode;
)R =P-> next; P-> next =R;
R-> next =P; P-> next =R;
R-> next =P-> next; P-> next =R;
R-> next =P-> next; P-> next =R-> next;
tail=newnode;newnode=head;
tail[next]=newnode;newnode[next]=head;tail=newnode;
newnode→next=head;tail=newnode;
tail→next=newnode;newnode→next=head; tail=newnode;
free(head);
head = head->next;tail->next = head->next;free(p);
head = head->next;tail->next = head;free(p);
head = head->next;tail = head->next;free(p);
free(mid);
pt = mid->next; free(mid);
pt->next = mid;free(mid);
pt->next = mid->next;free(mid);
每一個節點具有二個欄位。
每一個節點具有三個欄位。
節點結構的中間為資料欄位。
左右各有兩個指標欄位
雙向鏈結串列有兩個指標節點,在處理加入或刪除節點動作時,速度比較快。
若雙向鏈結串列有任一端的指標連結錯誤或脫落,它可以快速進行修補錯誤或脫落的連結節點。
由於雙向鏈結串列有兩個指標節點,所以比較浪費記憶體空間。
雙向鏈結串列的加入或刪除時,必須要有較少的連結節點。
非零項目
零項目
非零與零項目
以上皆非
係數、指標
指數、係數及指標
指標、係數
係數、指數及指標
<br><img src='pic/5-5.jpg' width='427' height='73' /><br>
<br><img src='pic/5-6.jpg' width='427' height='73' /><br>
<br><img src='pic/5-7.jpg' width='427' height='73' /><br>
<br><img src='pic/5-8.jpg' width='427' height='73' /><br>
Quiz Review Timeline +
Our quizzes are rigorously reviewed, monitored and continuously updated by our expert board to maintain accuracy, relevance, and timeliness.