特點:方便查詢乙個節點的前,後相鄰節點
(1)已知某個節點的位址,刪除他的時間o(1)
修改p節點前驅節點的next指標和p節點後繼節點是prior指標
p->prior->next = p->next;
p->next->prior = p->prior;
(2)在某個節點的前後插入乙個節點的時間為o(1)
2.迴圈鍊錶
1.迴圈單鏈表:構成乙個環(可以迴圈查詢)
2.迴圈雙鏈表:構成兩個環(可以迴圈查詢,可以通過頭節點快速找到尾節點)
刪除尾節點,在尾節點前後插入乙個節點的時間均為0(1)
3.有序表
題目如下:假設乙個有序表的採用順序表儲存,設計乙個高效演算法刪除重複的元素
列如:l=(1,1,1,2,2,2,3,3,3)------>l=(1,2,3)
利用刪除所有值為x的元素的演算法思路:
void deleupnode1(sqlist *&l)
l->length = k; //順序表l的長度等於k
//兩個單鏈表中求解公共元素
void intersect(linklist ha,linklist hb,linklist &hc)
}r->next = null;
}
迴圈鍊錶和雙鏈表
1 假設在長度大於1的單迴圈鍊錶中,既無頭結點也無頭指標。s為指向某個結點的指標,試編寫演算法刪除結點 s的直接前驅結點。2 已知由單鏈表表示的線性表中,含有三類字元的資料元素 如 字母 數字和其它字元 設計演算法構造三個以迴圈鏈表示的線性表,使每乙個表中只含同一類的字元,且利用原表中的結點空間作為...
雙鏈表 迴圈鍊錶
一 雙鏈表 對於雙鏈表,採用類似於單鏈表的型別定義,其dlinklist型別的定義如下 typedef struct dnode 宣告雙鏈表節點型別 dlinklist 1.建立雙聯表 1 頭插法 void createlistf dlinklist l,elemtype a,int n 頭插法建立...
迴圈鍊錶 迴圈雙鏈表 迴圈單鏈表
迴圈單 雙鏈表,建立 初始化 尾插 頭插 遍歷 插入 刪除 判空 部分函式採用過載 此處為c include include include using namespace std typedef struct lnodelnode,linklist typedef struct dnodednod...