給出乙個單鏈表,返回刪除單鏈表的倒數第 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...