單鏈表無法逆向檢索,而雙鏈表可進可退,相比較而言儲存密度更低一些
typedef
struct dnodednode,
*dlinklist;
bool initdlinklist
(dlinklist &l)
//判斷雙鏈表是否為空
bool isempty
(dlinklist l)
void
testdlinklist()
//雙鏈表的插入
bool insertnextdnode
(dnode *p,dnode *s)
//雙鏈表的刪除
bool deletenextdnode
(dnode *p)
//雙鏈表的銷毀
void
destorylist
(dlinklist &l)
free
(l);
//釋放頭結點
l=null
;//頭指標指向null
}
//雙鏈表的遍歷
//後向遍歷
while
(p!=
null
)//前向遍歷
while
(p!=
null
)//前向遍歷(跳過頭結點)
while
(p->prior!=
null
)
注意邊界處理,對於最後乙個結點需要進行特殊處理,對於雙鏈表也需要順序遍歷進行查詢 雙鏈表基本操作
1.在頭接點插入指定的值 template void insertd dnode front,const t value 2.顯示所有接點數值 template void showd dnode front 3.刪除接點 template void deleted dnode lhs 4。刪除指定資...
雙鏈表基本操作
看歐立奇的 程式設計師面試寶典 的雙向鍊錶部分,發現其中建立雙向鍊錶和刪除鍊錶中得某一點的程式存在問題,現將已經除錯通過的程式貼在下面 include using namespace std define len sizeof dnode typedef struct doublenode dnod...
雙鏈表基本操作
include include using namespace std define null 0 define maxsize 50 struct strlnode void create struct strlnode p,int x 建立雙鏈表 表頭節點 void insertnode str...