又重複了鍊錶建立,鍊錶輸出,鍊錶結點遍歷,
主角當然是鍊錶結點刪除。
鍊錶結點刪除,有三種情況:
情況1,刪除頭結點。只要把鍊錶結構指標,指向第二個結點。
情況2,刪除最後結點。只要把倒數第二個結點的next指標指向null就行。
情況3,刪除中間結點。只要把中間結點的上乙個節點next指標指向中間結點的next指標指向的地方就行。
鍊錶結點遍歷,就是為了找出要刪除的結點的上乙個節點。
具體**如下:
/*****************************************
*//*
程式例項: 3_5.c
*//*
鏈結串列的節點刪除
*//*
****************************************
*/#include
<
stdlib.h
>
struct
llist
/*串列結構宣告 */;
typedef
struct
llist node;
/*定義新型態
*/typedef node
*llink;
/*定義新型態指標
*//*
----------------------------------------
*//*
鏈結串列的列印
*//*
----------------------------------------
*/void
printllist(llink ptr)
printf("\n
");
/*換行 */}
/*----------------------------------------
*//*
鍵結串列的建立
*//*
----------------------------------------
*/llink createllist(
int*
array,
intlen)
return
head;}/*
----------------------------------------
*//*
鏈結串列的節點走訪
*//*
----------------------------------------
*/llink findnode(llink head,
intnum)
return
ptr;}/*
----------------------------------------
*//*
鍵結串列的節點刪除
*//*
----------------------------------------
*/llink deletenode(llink head,llink ptr)
return
head;}/*
----------------------------------------
*//*
主程式: 找到郵寄編號後, 將之刪除.
*//*
----------------------------------------
*/void
main()
; /*
陣列內容
*/llink head;
/*指向串列開始
*/llink ptr;
intnum;
/*郵寄編號變數
*/head
=createllist(llist1,
6);
/*建立串列
*/if( !
head )
printf(
"原來的鍊錶: ");
printllist(head);
/*列印原來串列
*/while( 1
)}else
exit(
1);
/*結束離開 */}
}
資料結構C語言》3基本鍊錶》3 5鍊錶的結點刪除
又重複了鍊錶建立,鍊錶輸出,鍊錶結點遍歷,主角當然是鍊錶結點刪除。鍊錶結點刪除,有三種情況 情況1,刪除頭結點。只要把鍊錶結構指標,指向第二個結點。情況2,刪除最後結點。只要把倒數第二個結點的next指標指向null就行。情況3,刪除中間結點。只要把中間結點的上乙個節點next指標指向中間結點的ne...
資料結構3 鍊錶
鍊錶是儲存許多同型別的資料元素組成的有序列表。鍊錶如同火車,人數決定車箱數,人多就向系統申請多加乙個車廂,人少就去除乙個車廂。這種動態分配記憶體的方式,按需分配,可以避免記憶體的浪費。int p val int型別的指標p指向val 動態記憶體分配 就是程式在執行的時候向系統申請記憶體,程式執行結束...
資料結構 鍊錶(3)
現在我們可以回頭總結一下我們的鍊錶 鍊錶是乙個由節點組成的一條鏈。每個節點包含兩條資訊 序列中儲存的是一些資料 節點中有指向列表中下乙個節點的鏈結。我們可以從第乙個單元格開始跟隨著link指標,遍歷整個鍊錶。如同下圖所示 左邊是乙個節點,右邊是由節點組成的鍊錶 鍊錶是用於儲存元素序列的資料結構。每個...