刪除鍊錶的節點 鍊錶操作

2021-10-10 06:10:00 字數 1220 閱讀 2994

給定單向鍊錶的頭指標和乙個要刪除的節點的值,定義乙個函式刪除該節點。

返回刪除後的鍊錶的頭節點。

注意:此題對比原題有改動

示例 1:

輸入: head = [4,5,1,9], val = 5

輸出: [4,1,9]

解釋: 給定你鍊錶中值為 5 的第二個節點,那麼在呼叫了你的函式之後,該鍊錶應變為 4 -> 1 -> 9.

示例 2:

輸入: head = [4,5,1,9], val = 1

輸出: [4,5,9]

解釋: 給定你鍊錶中值為 1 的第三個節點,那麼在呼叫了你的函式之後,該鍊錶應變為 4 -> 5 -> 9.

說明:

題目保證鍊錶中節點的值互不相同

若使用 c 或 c++ 語言,你不需要 free 或 delete 被刪除的節點

劍指offer上的題目中是給定了當前要刪除的節點的指標,在leetcode上的題目就是簡答的刪除乙個元素值為val的節點。

對於劍指offer上的題目的解法應該是:

對於給定要刪除的節點p:p = p -> next; p->next = p->next->next;

即把後乙個節點往前移一位,然後刪除後乙個節點。

/**

* definition for singly-linked list.

* struct listnode ;

*/struct listnode*

deletenode

(struct listnode* head,

int val)

//如果不是頭結點

// 定義乙個p指標指向頭結點,在頂乙個指標p.next

struct listnode *p = head;

struct listnode *node = p->next;

while

(node!=

null

) p = node;

node = p->next;

}return head;

}

鍊錶 刪除鍊錶的節點

劍指offer的乙個題,題目是要求在最少的時間內刪除鍊錶的節點。問題分析 對於鍊錶的刪除,按照劍指offer的一貫思路就是展開討論 1 空鍊錶咋辦 待刪除的節點是空節點咋辦 2 要刪除的節點在鍊錶中的位置有三種情況 1 鍊錶只有乙個節點,待刪除節點是表頭又是尾節點 2 鍊錶有多個節點,待刪除的節點是...

刪除鍊錶節點

問題描述 給出單鏈表頭指標以及要刪除節點的位址,要求寫 刪除這個節點,並且時間複雜度為o 1 如何實現?分析 1 應變能力 2 對時間複雜度的理解 平常思路 prev next temp next free temp 但是該思路的時間複雜度為o n 解題 不能從phead開始找,入口在所要刪除的節點...

鍊錶刪除節點

define crt secure no warnings include include typedef struct linknode lk,lk 有頭鍊錶的初始化 lk initlinknode 初始化頭結點 headnode num 1 頭結點不維護資料域,這行 可寫可不寫 headnode...