雙向迴圈帶頭節點鍊錶

2021-07-24 11:08:39 字數 1936 閱讀 4412

#include

#include

struct dblnode;

typedef struct dblnode dblnode;

typedef struct dblnode * dbllink;

void create_link(dbllink *head);                           //建立鍊錶

void create_newnode(dbllink *newnode);                     //建立新的節點

void is_malloc_ok(dbllink *newnode);                       //判斷動態分配記憶體是否成功 

void insert_node_head(dbllink *head,dbllink *newnode);     //頭插鍊錶

void display_node_forword(dbllink head);                   //先序顯示鍊錶

void insert_node_tail(dbllink *head,dbllink *newnode);     //尾插鍊錶

void display_node_backword(dbllink head);                  //後序顯示鍊錶

void release_link(dbllink *head);                          //釋放整個鍊錶

void insert_node_mid(dbllink *head,dbllink *newnode,int num);  //中間插鍊錶(從小到大)

int main()

display_node_forword(head);        //呼叫先序顯示函式

release_link(&head);        //呼叫釋放鍊錶函式

display_node_backword(head);        //呼叫後序顯示函式

return 0;}

//建立新的鍊錶,形成迴圈鍊錶

void create_link(dbllink *head)   

//建立新的節點

void create_newnode(dbllink *newnode)

//判斷動態儲存空間是否成功

void is_malloc_ok(dbllink *newnode)}

//頭插鍊錶

void insert_node_head(dbllink *head,dbllink *newnode)}

//先序顯示鍊錶

void display_node_forword(dbllink head)

while(temp != head)        //鍊錶不為空}

//尾插鍊錶

void insert_node_tail(dbllink *head,dbllink *newnode)

//後序顯示鍊錶

void display_node_backword(dbllink head)

while(temp != head)        //鍊錶不為空}

//釋放鍊錶

void release_link(dbllink *head)}

//中間插鍊錶(從小到大)

void insert_node_mid(dbllink *head,dbllink *newnode,int num)

if(temp->next == *head)        //鍊錶不為空,只有乙個節點

else

}else

if(temp == (*head)->next)        //遇到第乙個節點就退出迴圈,即新節點為當前鍊錶最小

else

else

}else        //對於不到尾節點的新節點作處理}}

}

雙向帶環帶頭節點的鍊錶

建立乙個雙向鍊錶的節點 class listnode 關於頭插 如何將鍊錶列印出來 public void display system.out.println system.out.println 反向 system.out.print for listnode cur head.prev cur...

資料結構 雙向迴圈帶頭結點鍊錶

前面我們寫過了不帶頭結點的單鏈表,由於沒有頭結點,在對單鏈表進行頭插 刪的時候需要傳入二級指標 在需要進行尾插 刪的時候,需要先根據頭指標找到頭結點,然後從頭往後遍歷找到最後乙個結點再進行相應操作。而我們今天要寫的雙向迴圈帶頭結點鍊錶,相對於不帶頭結點的單鏈表做增刪時,將會方便許多。typedef ...

雙向迴圈帶頭結點鍊錶的常見操作

include dlist.h include malloc.h include assert.h include pdlnode buydlist dldatatype data pnewnode pnext null 剛開始給節點並不知道位置所以給null pnewnode ppre null ...