資料結構 雙鏈表的建立和操作

2021-08-09 21:28:26 字數 2178 閱讀 7871

雙向鍊錶也叫雙鏈表,是鍊錶的一種,它的每個資料結點中都有兩個指標,分別指向直接後繼和直接前驅。所以,從雙向鍊錶中的任意乙個結點開始,都可以很方便地訪問它的前驅結點和後繼結點。一般我們都構造雙向迴圈鍊錶。

注意:在實現的過程中,要分清前驅指標和後繼指標,不要把他們當成乙個指標。

1

//雙向鍊錶的實現

2 templatestruct

node;

回到頂部(go to top)

1 templateclass

nlink

211 ~nlink()

1215

//清空雙鏈表

16void

clearlink()

1725 head->next=null;26}

27//

銷毀雙鏈表

28void

destorylink()

2936}37

//列印雙鏈表

38void

printlink()

3947 cout<

49//

在雙鏈表末尾新增結點

50bool

5162 p->next=s;

63 s->prior=p;

64return

true;65

}66//獲取鍊錶的長度

67int

length()

6878

return

lenth;79}

80//

在第pos個位置插入新節點

81bool insertlink(int

pos,t e)

8290 node*s=new node;

91if (s==null)

92return

false

;93 s->data=e;

94 s->next=s->prior=null;

95if (p==null||posflag>pos-1)96

99 s->next=p->next;

100if(p->next!=null)

101 p->next->prior=s;

102 p->next=s;

103 s->prior=p;

104return

true

;105

}106

107//

刪除第i個位置上的節點

108bool deletelink(int

pos)

109115

int posflag=0

;116

while(p && posflag1

)117

121if (p && p->next==null)

122127

else

133return

true

;134

}135

136//

刪除制定元素的節點

137bool

deletelink(t e)

138146 p=p->next;

147}

148if(p==null)

149153

//判斷要刪除的是不是尾節點

154if (p->next==null)

155160

else

166return

true

;167

}168 };

1

intmain()

28 link.insertlink(11,'s'

);9 cout<

length:

"10link.printlink();

11 link.deletelink('s'

);12

link.printlink();

13 cout<

length:

"14 system("

pause");

15return0;

16 }

資料結構 雙鏈表的操作

1 利用尾插法建立乙個雙向鍊錶。2 遍歷雙向鍊錶。3 實現雙向鍊錶中刪除乙個指定元素。4 在非遞減有序雙向鍊錶中實現插入元素e仍有序演算法。5 判斷雙向鍊錶中元素是否對稱若對稱返回1否則返回0。6 設元素為正整型,實現演算法把所有奇數排列在偶數之前。include include define el...

資料結構雙鏈表基本操作

雙鏈表 主要注意最後結點的操作,否則容易出現null prior的情況。include include typedef struct dlnode dlnode,list 尾插法構建 void createndlist list l,int a,int n f next null void crea...

資料結構 雙鏈表的基本操作

定義順序表 typedef structsqlist 初始化順序表 必須要!構建c表的時候會用上 void initsqlist sqlist l l.data i e l.size 順序的表長要增加!return 1 特定位置刪除元素 int deleteelem sqlist l,int p i...