鍊錶刪除節點

2021-10-19 19:25:33 字數 1698 閱讀 2260

#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...