0876-链表的中间结点

2018-11-28  本文已影响0人  liyoucheng2014

链表的中间结点

方案一


使用快慢指针

借助单链表实现

C-源代码


#include <stdlib.h>

#include "LinkList.h"

struct ListNode* middleNode(struct ListNode* head) {
    struct ListNode *fast = head;
    struct ListNode *slow = head;
    
    while (fast != NULL && fast->next != NULL) {
        fast = fast->next->next;
        slow = slow->next;
    }
    
    return slow;
}

void test_0876(void)
{
    int arr[5] = { 5, 4, 3, 2, 1 };
    struct ListNode *l1 = createNode(arr, sizeof(arr) / sizeof(arr[0]));
    printNode(l1);
    
//    struct ListNode *ret1 = middleNode(l1);
//    printNode(ret1);
    
    int arr2[6] = { 6, 5, 4, 3, 2, 1 };
    struct ListNode *l2 = createNode(arr2, sizeof(arr2) / sizeof(arr2[0]));
    printNode(l2);
    
    struct ListNode *ret2 = middleNode(l2);
    printNode(ret2);
}

上一篇 下一篇

猜你喜欢

热点阅读