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

2021-10-24 12:58:22 字數 1321 閱讀 6976

這裡演算法的思路很簡單,就是利用雙指標進行定位,筆記主要記錄的是c++的一些基礎知識,也就是關於指標傳遞的一些知識。

bool deletelistnode(int k, list& list)傳入的是鍊錶指標的引用,也就是直接操作實參鍊錶,好處是當需要刪除首指標時,可以將鍊錶的head向next賦值即可,如果用bool deletelistnode1(int k, node* list),在delete list之後,實參指標將指向的是乙個被刪除的指標,儘管在呼叫的函式中也進行的next賦值,但是要知道的是指標傳參也是一種傳值操作,也就是在函式中宣告了乙個變數他的位址也形參的位址不一樣,只是儲存的值(指標(也就是乙個位址))一樣,當刪除該指標之後,實參中的指標也被刪除了,我們next賦值操作的是在棧中,當結束之後,實參並沒有進行next賦值操作,也就不能達到效果,所以解決方法就是傳入引用。

// listnode.cpp : 定義控制台應用程式的入口點。

//#include

"stdafx.h"

#include

using

namespace std;

//刪除鍊錶倒數第k個節點

typedef

struct node

}node,

*list;

bool

deletelistnode

(int k, list& list)

if(fast ==

null

)while

(fast-

>next !=

null

) list temp = slow-

>next;

slow-

>next = temp-

>next;

delete temp;

return

true;}

bool

deletelistnode1

(int k, node* list)

if(fast ==

null

)while

(fast-

>next !=

null

) list temp = slow-

>next;

slow-

>next = temp-

>next;

delete temp;

return

true;}

void

printlist

(list list)

cout << endl;

}int

main()

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

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

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

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

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

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