這篇文章主要介紹了C++刪除鏈表中間節點的方法,結合實例形式分析了鏈表刪除中間節點的具體思路與實現技巧,但願在學習上有幫助到你們。node
給定鏈表頭結點head,實現刪除鏈表的中間節點函數。程序員
快慢指針,快指針走兩步,慢指針一步。 算法
當快指針走到終點時,慢指針正好是鏈表中間節點,刪除此節點便可。編程
typedef struct Node編程語言
{函數
int data;學習
struct Node* next;spa
}node, *pLinkedList;指針
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」
編程學習書籍:
編程學習視頻: