#define _crt_secure_no_warnings
#include
#include
typedef
struct linknode
lk,* lk;
//有頭鍊錶的初始化
lk initlinknode()
//初始化頭結點
headnode->num =-1
;//頭結點不維護資料域,這行**可寫可不寫
headnode->next =
null
;//記錄節點位置,方便插入新的資料
lk currentnode = headnode;
//讓使用者輸入幾個數,如果輸入-1,結束輸入
int val =-1
;while(1
)//開闢乙個新節點存放資料
lk node =
(lk)
malloc
(sizeof
(lk));
node->num = val;
node->next =
null
;//利用記錄當前位置的指標,將鍊錶中最後乙個節點與新開闢的節點相連線
currentnode->next = node;
//將記錄當前位置的指標指向新的節點
currentnode = currentnode->next;
}return headnode;
}//遍歷鍊錶
void
for_each_linklist
(lk headnode)
//利用乙個記錄當前節點的指標,來遍歷輸出整個鍊錶
lk curnode = headnode->next;
//迴圈結束條件:curnode指標為空
while
(curnode)
}//刪除節點
void
delete_linklist
(lk headnode,
int val)
//建立一前一後兩個指標
lk prvenode =
(lk)
malloc
(sizeof
(lk));
lk curnode =
(lk)
malloc
(sizeof
(lk));
prvenode = headnode;
curnode = headnode->next;
//遍歷鍊錶
while
(curnode)
//沒找到的情況
if(curnode ==
null
)//更改指標指向進行刪除
prvenode->next = curnode->next;
//刪除掉待刪除的節點,釋放節點在堆區開闢的記憶體空間
圖畫說明:特殊情況也適用
刪除鍊錶節點
問題描述 給出單鏈表頭指標以及要刪除節點的位址,要求寫 刪除這個節點,並且時間複雜度為o 1 如何實現?分析 1 應變能力 2 對時間複雜度的理解 平常思路 prev next temp next free temp 但是該思路的時間複雜度為o n 解題 不能從phead開始找,入口在所要刪除的節點...
鍊錶 刪除鍊錶的節點
劍指offer的乙個題,題目是要求在最少的時間內刪除鍊錶的節點。問題分析 對於鍊錶的刪除,按照劍指offer的一貫思路就是展開討論 1 空鍊錶咋辦 待刪除的節點是空節點咋辦 2 要刪除的節點在鍊錶中的位置有三種情況 1 鍊錶只有乙個節點,待刪除節點是表頭又是尾節點 2 鍊錶有多個節點,待刪除的節點是...
單向鍊錶刪除節點
單向鍊錶刪除節點的乙個技巧,這個是在 程式設計之美 上面看到的,可以用來對付一些演算法題。有時候會遇到這種情況,單鏈表提供乙個指標,要求要刪除指標指向的節點。如下 考慮到釋放記憶體,還再需要乙個指標 我們具體一下,有這麼乙個單向鍊錶,這個鍊錶的節點比較簡單,資料域只有乙個整型 並且當前的指標 ite...