Find the middle point of the linked list
Web Link
None
Description
Find the middle point of the linked list
Example
Given 1->2->8->4->7->0->4->null, return 4.
Code - C++
ListNode* midpoint(ListNode *head) {
ListNode* runner = head;
ListNode* chaser = head;
if (head == NULL) {
return NULL;
}
while (runner->next && runner->next->next) {
chaser = chaser->next;
runner = runner->next->next;
}
return chaser;
}
- 完整(包括测试)
#include<iostream>
using namespace std;
class ListNode{
public:
int val;
ListNode* next;
ListNode(const int val, ListNode* nextNode = NULL) :val(val), next(nextNode){
}
};
ListNode* midpoint(ListNode *head) {
ListNode* runner = head;
ListNode* chaser = head;
if (head == NULL) {
return NULL;
}
while (runner->next && runner->next->next) {
chaser = chaser->next;
runner = runner->next->next;
}
return chaser;
}
void midpointtest() {
ListNode* head = new ListNode(1, NULL);
ListNode* node = head;
node->next = new ListNode(2, NULL);
node = node->next;
node->next = new ListNode(8, NULL);
node = node->next;
node->next = new ListNode(4, NULL);
node = node->next;
node->next = new ListNode(7, NULL);
node = node->next;
node->next = new ListNode(0, NULL);
node = node->next;
node->next = new ListNode(4, NULL);
node = node->next;
node->next = NULL;
cout << midpoint(head)->val << endl;
}
int main() {
midpointtest();
return 0;
}
Tips
None