Website Summary Files Commits Branches @commit @diff @stats
path: root / Seminar04 / find-middle.cpp
blob: dc587ba51530cdda8ff5134bc95dfea975ac67d8 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include"linked-list-utils.h"

template<class T>
LinkedListNode<T>* findMiddle(LinkedListNode<T>* ll) {
    LinkedListNode<T>* fast = ll;
    LinkedListNode<T>* slow = ll;


    while(fast && fast->next) {
        fast = fast->next->next;
        slow = slow->next;
    }

    return slow;
}

void example() {
    LinkedListNode<int>* ll = new LinkedListNode(1, new LinkedListNode(2, new LinkedListNode(3, new LinkedListNode(4))));
    LinkedListNode<int>* lls = new LinkedListNode(1, new LinkedListNode(2, new LinkedListNode(3, new LinkedListNode(4, new LinkedListNode(5)))));

    LinkedListNode<int>* firstMiddle = findMiddle(ll);
    LinkedListNode<int>* secondMiddle = findMiddle(lls);

    std::cout << firstMiddle->data << " " << secondMiddle->data;

    freeList(ll);
    freeList(lls);
}