這篇文章主要介紹了C++洗掉鏈表中間節點的方法,結合實體形式分析了鏈表洗掉中間節點的具體思路與實作技巧,希望在學習上有幫助到大家,

題目:
給定鏈表頭結點head,實作洗掉鏈表的中間節點函式,
解題思路及代碼:
快慢指標,快指標走兩步,慢指標一步,
當快指標走到終點時,慢指標正好是鏈表中間節點,洗掉此節點即可,
鏈表結構定義:
typedef struct Node
{
int data;
struct Node* next;
}node, *pLinkedList;
演算法C++代碼:
Node* removeMidNode(pLinkedList head)
{
if (head->next == NULL || head == NULL)
return head;
if (head->next->next == NULL)
return head->next;
pLinkedList fast = head;
pLinkedList slow = head;
pLinkedList pre = NULL;
/*
head 1 2 3 4 5
pre slow fast
*/
//1個節點
if (head->next->next == NULL)
return head->next;
while (fast->next != NULL && fast->next->next != NULL)
{
pre = slow;
fast = fast->next->next;
slow = slow->next;
}
//此時fast已到終點,slow為中間節點,pre為中間節點前一個節點
pre->next = slow->next;
free(slow);
slow = NULL;
return head;
}
今天的分享就到這里了,有什么問題的地方歡迎大家指出,

最后,如果你也想成為程式員,想要快速掌握編程,趕緊加入學習企鵝圈子!
里面有資深專業軟體開發工程師,在線解答你的所有疑惑~編程語言入門“so easy”
編程學習書籍:

編程學習視頻:

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/248834.html
標籤:C++
上一篇:js函式呼叫
