20 雙向鍊錶

2022-07-13 13:36:13 字數 2118 閱讀 7486

1

#define _crt_secure_no_warnings

23 #include4 #include5 #include67

#define ok 1

8#define error 0

9#define true 1

10#define false 0

1112 typedef int

elemtype;

13 typedef int

status;

14 typedef struct

dulnode dulnode,*dulinklist;

19//

初始化鍊錶

20void init_dul(dulinklist &l)

26//

鍊錶長度

27 status length_dul(dulinklist &l)

35return

i;36}37

38 dulinklist getelemp_dul(dulinklist &l, int

i) 44

if (!p || j>i || i>(length_dul(l) + 1))

47if (i == length_dul(l) + 1)

50return

p;51}52

53 status listinsert_dul(dulinklist &l, int

i, elemtype e)

62 s->data =e;

63 s->prior = p->prior;

64 p->prior->next =s;

65 s->next =p;

66 p->prior =s;

67return

ok;68}69

//刪除帶頭結點的雙鏈迴圈線性表l的第i個元素

70 status listdelete_dul(dulinklist &l, int i, elemtype &e)

75 e = p->data;

76 p->prior->next = p->next;

77 p->next->prior = p->prior;

78free

(p);

79return

ok;80}81

//釋放銷毀

82void destory_dul(dulinklist &l)

92free

(l);93}

9495

//輸出列印

96void printf_dul(dulinklist &l)

103 printf("\n"

);104

}105

106int

main()

107;

110elemtype e;

111//

初始化112

init_dul(list);

113//

插入資料

114for (int i = 0; i < 6; i++)

117//

輸出118

printf_dul(list);

119 printf("

刪除前長度:%d\n

", length_dul(list));

120//

刪除121 listdelete_dul(list, 1

, e);

122//

輸出123

printf_dul(list);

124 printf("

刪除後長度:%d\n

", length_dul(list));

125 printf("

刪除的元素:%d\n

", e);

126127

//銷毀

128destory_dul(list);

129130 printf("\n"

);131 system("

pause");

132return0;

133 }

vs2015執行結果:

1 5 雙向鍊錶

實現 public class doublelinkedlistdemo 鍊錶操作類 class doublelinkedlist 新增節點 同單向,但有點區別,加上前乙個指標 public void add heronode2 heronode2 temp.next heronode2 heron...

06 雙向鍊錶

修改 原理與單鏈表相同 刪除public class doublelinkedlist 新增結點到雙向鍊錶 追加 public void add heronode2 node 按編號順序將結點到鍊錶 如果有這個排名,則新增失敗,並給出提示 public void insertbyorder hero...

19 雙向鍊錶

1,建立乙個雙向鍊錶,並初始化賦值 2,在指定結點前插入乙個結點 這裡直接是第三個結點前插入乙個結點 1 雙向鍊錶在指定結點前插入乙個結點,這裡在第三個結點前插入 3,在指定結點後插入乙個結點,這裡直接是第乙個結點後插入新節點 1 雙向鍊錶在指定結點後插入乙個結點,這裡在第乙個結點後插入 4,刪除指...