2021 1 18 刪除結點 求中間節點

2021-10-16 11:47:40 字數 1443 閱讀 5804

示例 1:

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

輸出: [4,1,9]

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

要點:設定乙個額外的結點,指向head作為標記,並方便遍歷

class

solution

ptemp = ptemp-

>next;

}return

(head-

>next);}

};

class

solution

//正常返回原結點

return head;}}

;

將所有元素放到乙個容器中,取得中間元素

listnode*

middlenode

(listnode* head)

//3. 返回中間結點

return nodes[nodes.

size()

/2];

}};

遍歷一邊鍊錶,檢視元素個數

再遍歷一遍,遍歷到中間節點

listnode*

middlenode

(listnode* head)

//2. 獲取中間長度

nlength/=2

;//3. 遍歷到中間節點

while

(nlength--

)return head;

}

設定乙個額外結點ptemp,用於記錄中間節點並返回;

遞迴head深入到最後乙個結點,同時記錄鍊錶長度nlength

若到頭,鍊錶長度除2,獲取中間位置,並開始返回

每返回乙個幾點,nlength-1

nlength等於-1時,便將head賦值給,ptemp,一路返回

class

solution

//返回過程中,看head是否為空

if(head ==

null

)//若nlength,說明返回到中間位置,head賦值給ptemp;

if(nlength ==0)

ptemp = head;

//每返回乙個,長度-1

nlength--

;return ptemp;}}

;

設定兩個指標指向head;

快指標一次走兩步;慢指標一次走一步,則慢指標始終指向快指標一半的位置;

當快指標走到頭,慢指標則在中間位置

class

solution

//快指標走到頭,慢指標為中間節點

return pslow;}}

;

Leetcode 面試題 02 03 刪除中間節點

實現一種演算法,刪除單向鍊錶中間的某個節點 即不是第乙個或最後乙個節點 假定你只能訪問該節點。輸入 單向鍊錶a b c d e f中的節點c 結果 不返回任何資料,但該鍊錶變為a b d e f將下乙個節點的值賦給當前節點,然後再將當前節點指向下下個節點。definition for singly ...

程式設計13 刪除鍊錶的中間結點和a b處的結點

header content type text html charset utf 8 刪除鍊錶的中間結點和a b處的結點 p38 class node function removemidnode head elseif head next next null else pre next pre ...

單鏈表遍歷一次求倒數第k個結點和中間結點

單鏈表 資料結點是單向排列的。乙個單鏈表結點,其結構分為兩部分 資料域和指標域 用來儲存其直接後繼的位址 例如 typedef struct nodestudent 上述 定義了乙個單鏈表的結點,其中字元型陣列char name 20 用來儲存姓名。指標 link是乙個用來儲存其直接後繼的指標。單鏈...