還是《程式設計師面試寶典》上的**
#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指...