刪除鍊錶中的結點

2021-10-17 12:08:09 字數 2451 閱讀 3934

題目一:

給你乙個鍊錶,刪除鍊錶的倒數第 n 個結點,並且返回鍊錶的頭結點。

高階:你能嘗試使用一趟掃瞄實現嗎?

示例 1:

輸入:head = [1,2,3,4,5], n = 2 輸出:[1,2,3,5]

示例 2:

輸入:head = [1], n = 1 輸出:

示例 3:

輸入:head = [1,2], n = 1 輸出:[1]

解法一:

利用乙個佇列來解決,將要刪除結點之前的元素和之後的元素全部入佇列,然後再出佇列即可。

**如下:

struct listnode*

removenthfromend

(struct listnode* head,

int n)

p = head;

while

(p)}

que.

push

(p->val)

; p = p-

>next;

} p = head-

>next;

struct listnode* q=p;

while

(!que.

empty()

)return q;

}

題目二:

給定乙個排序鍊錶,刪除所有重複的元素,使得每個元素只出現一次。

示例 1:

輸入: 1->1->2 輸出: 1->2

示例 2:

輸入: 1->1->2->3->3 輸出: 1->2->3

思路:利用雙指標解決,起初兩個指標都指向頭,讓乙個指標先跑,判斷前指標的值等於不等於後指標,如果不等於兩個指標同時往前跑,如果等於的話就讓前指標單獨往前跑。

**如下:

struct listnode*

deleteduplicates

(struct listnode* head)

struct listnode* p = head;

struct listnode* q = p;

while

(head !=

null

)else}if

(p !=

null

)return q;

}

題目三:

輸入乙個鍊錶,輸出該鍊錶中倒數第k個節點。為了符合大多數人的習慣,本題從1開始計數,即鍊錶的尾節點是倒數第1個節點。

例如,乙個鍊錶有 6 個節點,從頭節點開始,它們的值依次是 1、2、3、4、5、6。這個鍊錶的倒數第 2 個節點是值為 4 的節點。

示例:

給定乙個鍊錶: 1->2->3->4->5, 和 k = 2.

返回鍊錶 4->5.

**:

class

solution

int n=count-k;

p=head;

while

(n>0)

return p;}}

;

題目四:

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

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

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

示例 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.

思路:利用雙指標進行

**如下:

struct listnode*

deletenode

(struct listnode* head,

int val)

struct listnode* p=head;

struct listnode*tmp=p;

struct listnode* q=head->next;

while

(q)else

}return tmp;

}

刪除鍊錶中的結點

1.題目描述 請編寫乙個函式,使其可以刪除某個鍊錶中給定的 非末尾 節點,你將只被給定要求被刪除的節點。現有乙個鍊錶 head 4,5,1,9 它可以表示為 示例 1 輸入 head 4,5,1,9 node 5輸出 4,1,9 解釋 給定你鍊錶中值為 5 的第二個節點,那麼在呼叫了你的函式之後,該...

刪除鍊錶A中與鍊錶B結點相同的結點

題目描述 有兩串鍊錶表示為a和b,刪除鍊錶a中的結點,滿足刪除條件的結點是該結點與鍊錶b中某結點的值相同。如下 include using namespace std typedef struct list plist int deletenode plist plist void createli...

刪除鍊錶結點

劍指offer18題 刪除鍊錶的節點 題目描述 給定單向鍊錶的頭指標和乙個要刪除的節點的值,定義乙個函式刪除該節點。返回刪除後的鍊錶的頭節點。解題思路 該題在劍指offer中的原題是,給定乙個單鏈表的頭指標 指定結點指標,要求以o 1 的時間複雜度刪除該結點。解決方法為將待刪除結點的後繼結點的值 賦...