1. 程式人生 > >找到連結串列的中間節點

找到連結串列的中間節點

問題和刪除倒數第k個節點類似,如果兩次遍歷很容易得到結果

這裡可以使用快慢指標的方法

p每次遍歷兩個節點,q每次遍歷一個節點

當p或者p的下一個節點為空時,q指向連結串列的中間節點

程式碼:

int midList(Node * head) {//快慢指標
	Node * fast = head;
	Node * slow = head;
	while (fast&&fast->next) {
		fast = fast->next->next;
		slow = slow->next;
	}
	return slow->data;
}

執行結果