单链表返回中间结点
1. ?遍歷結點個數
#include <stdio.h> #include <stdlib.h>typedef struct LinkNode {int data;struct LinkNode *next; }LinkNode;LinkNode* LinkNodemid_A(LinkNode *head) {if (head == NULL || head->next == NULL){return head;}int n = 0;LinkNode *p = head;while (p != NULL){n += 1;p = p->next;}p = head; for (int i = 0; i < n / 2; i++){p = p->next;}return p; }2. 快慢指針法
LinkNode* LinkNodemid_B(LinkNode *head) {LinkNode *fast = head;LinkNode *slow = head;while (fast != NULL && fast->next != NULL){slow = slow->next;fast = fast->next->next;}return slow; }慢指針始終指向快指針走過路徑的中間,當快指針遍歷完鏈表后,慢指針恰好指向鏈表的中間
總結
- 上一篇: java dsl框架_Spring Bo
- 下一篇: android 定时器 误差,计时器秒表