func.h
#include
#include
#include
typedef
struct studentstu,
*pstu;
void
list_sort_insert
(pstu *
,pstu *
,int);
void
list_delete
(pstu *
,pstu *
,int);
void
list_print
(pstu)
;
func.c
#include
"func.h"
//有序插入法新建鍊錶
void
list_sort_insert
(pstu * pphead,pstu * pptail,
int i)
else
if(pcur->num>i)
else
//先ppre記住pcur
ppre=pcur;
pcur=pcur->pnext;
}//節點插入到尾部if(
null
==pcur)}}
//鍊錶刪除
void
list_delete
(pstu * pphead,pstu * pptail,
int i)
else
if(pcur->num==i)
free
(pcur);}
else
//先把當前賦值給前乙個
ppre=pcur;
pcur=pcur->pnext;
}//要刪除的是尾節點if(
*pptail==pcur)
//鍊錶要刪除的沒有該結點if(
null
==pcur)
}//鍊錶刪除後一定free,否則就是記憶體洩漏
}//鍊錶列印
void
list_print
(pstu phead)
printf
("\n");
}
main.c
#include
"func.h"
intmain()
//phead 是值傳遞,不會改變原本的
list_print
(phead)
;while
(printf
("please input delete num:\n"),
scanf
("%d"
,&i)
!=eof
)system
("pause");
}
刪除鍊錶結點
劍指offer18題 刪除鍊錶的節點 題目描述 給定單向鍊錶的頭指標和乙個要刪除的節點的值,定義乙個函式刪除該節點。返回刪除後的鍊錶的頭節點。解題思路 該題在劍指offer中的原題是,給定乙個單鏈表的頭指標 指定結點指標,要求以o 1 的時間複雜度刪除該結點。解決方法為將待刪除結點的後繼結點的值 賦...
刪除鍊錶的結點
1.問題描述 給定鍊錶的頭結點和待刪除結點,要求刪除鍊錶的結點要求時間複雜度為o 1 來自 劍指offer 2.分析 我們都知道鍊錶的要想訪問某個結點必須要從頭結點挨個遍歷,並且單鏈表我們沒有指向前驅的結點,因此我們可以用狸貓換太子 用這個待刪除結點的下個結點裡面的內容,複製到這個待刪除結點,然後刪...
刪除鍊錶的結點
刪除鍊錶的結點 請編寫乙個函式,使其可以刪除某個鍊錶中給定的 非末尾的 節點,您將只被給予要求被刪除的節點。比如 假設該鍊錶為1 2 3 4,給定您的為該鍊錶中值為3的第三個節點,那麼在呼叫了您的函式之後,該鍊錶則應變成1 2 4。這道題讓我們刪除鍊錶的乙個節點,更通常不同的是,沒有給我們鍊錶的起點...