#include
#include
typedef
struct
dnode
dnode,*
dlinklist
;void
init
(dlinklist&l
)void
insert_head
(dlinklist&l
)//頭插法
else
printf
("ok2");
printf
("請輸入x:\n");
scanf
("%d",&
x);}
}void
insert_end
(dnode*&
l)//
尾插法while(x
!=999)
}void
print
(dlinklistl)
//輸出printf
("\n");
}bool
insert
(dnode*&
l,inte)/
/在第e個位置插入節點
(前插法)/
/得到鍊錶中最後乙個節點if(
i==e
)else}}
i=i;
printf
("i:%d\n",i
);if(
i==e
)return
false;}
bool
deletelist_e
(dnode*&
l,inte)/
/刪除值為e的結點
else
}return
false;}
bool
deletelist_n
(dnode*&
l,inte)/
/刪除序號為e的結點
else
}return
false;}
intmain()
else
printf
("插入failed!\n");
print(l1
);printf
("------\n");
if(deletelist_e(l1
,3))
else
printf
("刪除failed!\n");
print(l1
);printf
("**********\n");
if(deletelist_e(l2
,3))
else
printf
("刪除failed!\n");
print(l2
);return0;
}
王道資料結構 (29) 雙鏈表的操作
雙鏈表的初始化 1.先分配頭節點 2.頭節點的左指標 右指標為null 雙鏈表的插入 雙鏈表的插入需要判斷p 的 下乙個 節點 是否為 null 如下面兩個圖 如果 p的下乙個節點是空 會報錯 所以我們要進行判斷 執行順序 1 2 3 4 1 先將 s 的next 域指向原來p 指向的next 域 ...
單鏈表 雙鏈表
實現乙個單鏈表,鍊錶初始為空,支援三種操作 1 向煉表頭插入乙個數 2 刪除第k個插入的數後面的數 3 在第k個插入的數後插入乙個數 現在要對該鍊錶進行m次操作,進行完所有操作後,從頭到尾輸出整個鍊錶。注意 題目中第k個插入的數並不是指當前鍊錶的第k個數。例如操作過程中一共插入了n個數,則按照插入的...
單鏈表和雙鏈表
單鏈表 單鏈表只有乙個指向下一結點的指標,也就是只能next 雙鏈表 雙鏈表除了有乙個指向下一結點的指標外,還有乙個指向前一結點的指標,可以通過prev 快速找到前一結點,顧名思義,單鏈表只能單向讀取 為什麼市場上單鏈表的使用多餘雙鏈表呢?從儲存結構來看,每個雙鏈表的節點要比單鏈表的節點多乙個指標,...