13. O(1)時間刪除連結串列節點

韓師學子--小倪發表於2020-12-10

題目描述:給定單向連結串列的頭指標和一個節點指標,在 O(1)時間複雜度內刪除該
節點。
思路:將要刪除節點的下一個節點的值賦給要刪除的節點,然後指向下下一個節點
程式碼實現:

public void deleteNode(ListNode head, ListNode deListNode) {
	if (deListNode == null || head == null) {
		return;
	}
	
	if (head == deListNode) {
		head = null;
	} else {
		// 若刪除節點是末尾節點,往後移一個
		if (deListNode.nextNode == null) {
			ListNode pointListNode = head;
			while (pointListNode.nextNode.nextNode != null) {
				pointListNode = pointListNode.nextNode;
			}
			pointListNode.nextNode = null;
		} else {
			deListNode.data = deListNode.nextNode.data;
			deListNode.nextNode = deListNode.nextNode.nextNode;
		}
	}
}

 

相關文章