📅  最后修改于: 2023-12-03 15:11:17.217000             🧑  作者: Mango
这篇文章介绍了如何用 C++ 程序查找给定链表的中间元素。
链表是一种数据结构,由多个节点组成,每个节点都包含一个元素和指向下一个节点的指针。链表的头节点是第一个节点,尾节点指向 NULL。
链表可以用于实现栈、队列和其他数据结构。
要查找链表的中间元素,可以使用两个指针:快指针和慢指针。快指针每次移动两个节点,慢指针每次移动一个节点。当快指针到达链表尾部时,慢指针指向的节点就是中间节点。
下面是用于查找链表中间元素的 C++ 程序:
#include <iostream>
using namespace std;
class Node {
public:
int value;
Node* next;
};
Node* findMiddleNode(Node* head) {
if (head == NULL) {
return NULL;
}
Node* slower = head;
Node* faster = head;
while (faster != NULL && faster->next != NULL) {
slower = slower->next;
faster = faster->next->next;
}
return slower;
}
int main() {
Node* head = new Node;
head->value = 1;
head->next = new Node;
head->next->value = 2;
head->next->next = new Node;
head->next->next->value = 3;
head->next->next->next = new Node;
head->next->next->next->value = 4;
head->next->next->next->next = NULL;
Node* middle = findMiddleNode(head);
if (middle != NULL) {
cout << "The middle node is " << middle->value << endl;
} else {
cout << "The list is empty." << endl;
}
return 0;
}
该程序使用了两个指针:slower 和 faster,它们都指向链表的头部。每次 slower 向后移动一个节点,faster 移动两个节点,直到 faster 到达链表尾部。此时,slower 指向的就是链表的中间节点。
程序的输出如下:
The middle node is 3
这篇文章介绍了如何用 C++ 程序查找给定链表的中间元素。要查找链表的中间元素,可以使用两个指针:快指针和慢指针。快指针每次移动两个节点,慢指针每次移动一个节点。当快指针到达链表尾部时,慢指针指向的节点就是中间节点。