一、迴圈鍊錶
(一)定義:將單鏈表或者雙鏈表的頭尾結點鏈結起來,就是乙個迴圈鍊錶。不增加額外儲存花銷,卻給不少操作帶來了方便。
從迴圈表中任一結點出發,都能訪問到表中其他結點。
(二)特點:
首尾相接的鍊錶。
可以從任一節點出發,訪問鍊錶中的所有節點。
判斷迴圈鍊錶中尾結點的特點:
q->next==first
template
<
class
t>
struct node
;template
<
class
t>
class
cyclelinklist
;
二、雙向鍊錶
(一)定義:單鏈表的主要不足之處是:link欄位僅僅指向後繼結點, 不能有效地找到前驅。雙鏈表彌補了上述不足之處,增加乙個指向前驅的指標。
(二)結構特點: 由於在雙向鍊錶中既有前向鏈又有後向鏈,尋找任乙個結點的直接前驅結點與直接後繼結點變得非常方便。設指標p指向雙鏈表中某一結點,則有下式成立:
p->llink->rlink = p = p->rlink->llink
(三)在結點p之後插入:
q->rlink=p->rlink;
q->llink=p;
p->rlink=q;
q->rlink->llink=q;
處理原則:先處理每個方向的 遠端指標,再處理近端指標
(四)刪除:
```cpp
p->llink->rlink=p->rlink;
if(p->rlink)
p->rlink->llink=p->rlink;
delete(p);
(五)雙鏈表的實現
template
<
class
t>
class
doublelink
;
三、靜態鍊錶
(一)定義:靜態鍊錶同樣可以借助一維陣列來描述:
#define maxsize= 鍊錶可能達到的最大長度
template
struct node;
(二)特點:
1、優點:
插入和刪除時不需要移動元素,直接修改指標即可,因此效率較高。
2、缺點:
靜態鍊錶是借助於陣列實現的,因此,不能動態的修改陣列的大小,存在著跟靜態陣列一樣不能按需進行儲存空間的分配。
資料結構筆記 線性表
思考 怎麼程式設計解決多項式相加問題?1.線性表概念 由同型別資料元素構成的有序序列的線性結構 1.表中元素個數稱為線性表的長度 2.線性表中沒有元素時稱為空表 3.表的起始位置稱為表頭,結束位置稱為表尾。2.線性表的adt描述 3.線性表的順序儲存實現 未測試 include using name...
資料結構筆記 線性表
資料元素的資料型別。struct seqlist seqlist sl create int maxlen void sl free seqlist slist 釋放 刪除 順序表。與sqlst create 配對。void sl makeempty seqlist slist 置為空表。intsl...
資料結構 筆記 線性表
定義 由同型別資料元素構成有序序列的線性結構 型別名稱 list 物件集 n n 0 個元素構成的有序序列 操作集 list makeempty 初始化乙個空線性表l elementtype findkth int k,list l 根據位序k,返回相應元素 int find elementtype...