C語言 雙鏈表

2021-08-02 01:12:13 字數 1062 閱讀 4959

還是《程式設計師面試寶典》上的**

#include

#include

typedef struct student

dnode;

// 建立雙鏈表

dnode *create()

else

cycle =

0; }

p->next =

null;

p = head;

head = head->next;

head->pre =

null;

free(p); // 釋放掉沒有存資料的第乙個節點

printf("\nhead data:%d\n",head->

data);

return head;

}// 求雙鏈表長度,跟單鏈表一樣

int length(dnode *head)

return n;

}// 輸出雙鏈表,跟單鏈表一樣

void print(dnode *head)

printf("null\n");

}// 雙鏈表刪除節點

dnode *del(dnode *head, int num)

else

if(p1->next ==

null) //刪除的是鍊錶尾

else

// 刪除的是鍊錶中

free(p1);

}else

// 沒有找到要刪除的節點

printf("\n%d could not been found!",num);

return head;

}// 雙鏈表插入節點

dnode *insert(dnode *head, int num)

else

// 正常插入

}else

// num比煉表中任何數都大,插入鍊錶尾

return head;

}int main()

可能鍊錶輸出的樣子有點問題,就這樣看吧

只有乙個節點的時候執行刪除操作會崩潰,,

雙鏈表 C語言

雙向鍊錶也叫雙鏈表,是鍊錶的一種,它的每個資料結點中都有兩個指標,分別指向直接後繼和直接前驅。簡單圖示 這次寫的雙鏈表的頭結點是不儲存資料的,所有資料都是存於頭結點的下乙個結點,即所有判斷都以頭結點的下乙個結點為準。資料簡介typedef struct dnode link 函式簡介link cre...

C語言 雙鏈表常用函式

煉表演示 雙向 include include 03link.h 鍊錶的初始化函式 void link init link p link 鍊錶的清理函式 void link deinit link p link 計算有效數字個數的函式,正反一樣,要修改可以讓p first,p mid,p last,...

雙鏈表(c語言版)

雙鏈表相對於單鏈表來說,每乙個節點還存了乙個指向上乙個節點的指標,提公升了便捷性,例如某些情境下我們需要找到當前節點的上乙個節點等問題,雙鏈表對於單鏈表有很大的優勢。雙鏈表尾節點的prev指標指向頭節點,故雙鏈表的頭節點為哨兵衛,不存資料,僅作為標記作用。當單鏈表為空時,僅存在乙個頭節點,next指...