快慢指针找链表中间节点的完整代码
时间: 2024-03-25 19:16:12 浏览: 65
以下是快慢指针找链表中间节点的完整代码:
```java
public ListNode middleNode(ListNode head) {
ListNode slow = head;
ListNode fast = head;
while (fast != null && fast.next != null) {
slow = slow.next;
fast = fast.next.next;
}
return slow;
}
```
希望能对您有所帮助,还有什么其它问题我可以帮您解答吗?
相关问题
快慢指针找链表中间节点的完整代码C语言
好的,以下是找链表中间节点的完整代码C语言:
```
#include <stdio.h>
#include <stdlib.h>
typedef struct ListNode {
int val;
struct ListNode *next;
} ListNode;
ListNode* middleNode(ListNode* head) {
ListNode *fast = head;
ListNode *slow = head;
while (fast && fast->next) {
fast = fast->next->next;
slow = slow->next;
}
return slow;
}
int main() {
ListNode *head = (ListNode*) malloc(sizeof(ListNode));
head->val = 1;
head->next = (ListNode*) malloc(sizeof(ListNode));
head->next->val = 2;
head->next->next = (ListNode*) malloc(sizeof(ListNode));
head->next->next->val = 3;
head->next->next->next = (ListNode*) malloc(sizeof(ListNode));
head->next->next->next->val = 4;
head->next->next->next->next = (ListNode*) malloc(sizeof(ListNode));
head->next->next->next->next->val = 5;
head->next->next->next->next->next = NULL;
ListNode *middle = middleNode(head);
printf("%d\n", middle->val);
return 0;
}
```
笑话:为什么Java程序员喜欢喝茶?因为Java里有泡茶的类!
链表中如何找到链表中间节点
要找到链表中间节点,可以采用快慢指针的方法。具体步骤如下:
1. 定义两个指针,一个快指针和一个慢指针,初始时两个指针都指向链表的头节点。
2. 快指针每次移动两个节点,慢指针每次移动一个节点,直到快指针到达链表末尾,此时慢指针所指的节点就是链表的中间节点。
下面是代码示例:
```
ListNode* findMiddleNode(ListNode* head) {
ListNode* fast = head;
ListNode* slow = head;
while (fast != nullptr && fast->next != nullptr) {
fast = fast->next->next;
slow = slow->next;
}
return slow;
}
```
阅读全文