在鍊錶中刪除倒數第K個節點

2021-10-08 13:48:05 字數 1120 閱讀 9694

給出乙個單鏈表,返回刪除單鏈表的倒數第 k 個節點的鍊錶。

輸入描述:

n 表示鍊錶的長度。

val 表示鍊錶中節點的值。

輸出描述:

在給定的函式內返回鍊錶的頭指標。

示例1輸入

5 4

1 2 3 4 5

輸出
1 3 4 5
備註:

1 ≤k

≤n≤1

06

1 \leq k \leq n \leq 10^6

1≤k≤n≤

106−10

6≤va

l≤10

6-10^6 \leq val \leq 10^6

−106≤v

al≤1

06題解:首先指標 p 從煉表頭節點開始,走到第 k 個結點停止,然後另乙個指標 q 從頭節點開始,p 繼續遍歷直到鍊錶尾部,q 跟著移動,在 p 為鍊錶最後乙個節點時,q 就是要刪除的倒數第 k 個結點。

**:

# include

using

namespace std;

struct list_node

;//鍊錶的節點

int k;

list_node *

input_list

(void

)//讀入鍊錶

else

}return phead;

}list_node *

remove_last_kth_node

(list_node * head,

int k)if(

!p)return head;

list_node * q = head;

list_node * q_pre = head;

while

(p->next)

q_pre-

>next = q-

>next;

delete q;

return head;

}void

print_list

(list_node * head)

}int main (

)

刪除鍊錶中倒數第K個節點,

題目 輸入乙個鍊錶,輸出該鍊錶的倒數第k個節點。為了符合大多數的習慣,最後乙個節點從1開始計數,即鍊錶的尾部節點為倒數第乙個節點。鍊錶定義如下 struct listnode listnode createlistnode int value void connectlistnodes listno...

刪除鍊錶中倒數第K個節點

這裡演算法的思路很簡單,就是利用雙指標進行定位,筆記主要記錄的是c 的一些基礎知識,也就是關於指標傳遞的一些知識。bool deletelistnode int k,list list 傳入的是鍊錶指標的引用,也就是直接操作實參鍊錶,好處是當需要刪除首指標時,可以將鍊錶的head向next賦值即可,...

鍊錶中刪除倒數第K個節點

分別實現兩個函式,乙個可以刪除單鏈表中倒數第k個節點,另乙個可以刪除雙鏈表中倒數第k個節點。從問題當中,我們只能得到乙個鍊錶和要刪除的第k個節點的資訊,於是就有以下思路 如果鍊錶為空或者k 0時,直接返回 如若不然,遍歷鍊錶的每個節點,每經過乙個節點k減1。比如對於1 2 3 4該鍊錶的過程如下 k...