寻找单链表中间结点

来源:互联网 发布:华讯方舟软件 编辑:程序博客网 时间:2024/04/27 14:21
思路:
  • 设置一个快指针,一个慢指针;
  • 快指针一次走两步,慢指针一次走一步;
  • 当快指针到链表尾部时,慢指针恰好到达链表中部;

代码如下:

typedef struct Node{    int    data;    struct Node* next;} Node;Node* findMiddle (Node* head){    Node* fast;    Node* slow;    Node* p;    if (head == NULL)        return NULL;            fast = slow = head;        while ((p = fast->next != NULL) && (p->next != NULL))    {        slow = slow->next;        fast = p->next;    }                return slow;}


原创粉丝点击