diff options
Add Seminar04
1 files changed, 25 insertions, 0 deletions
| -rw-r--r-- | Seminar04/reverse-linked-list.cpp | 25 |
diff --git a/Seminar04/reverse-linked-list.cpp b/Seminar04/reverse-linked-list.cpp new file mode 100644 index 0000000..486b41e --- /dev/null +++ b/Seminar04/reverse-linked-list.cpp @@ -0,0 +1,25 @@ +#include "linked-list-utils.h" + +template<class T> +void reverseLinkedList(LinkedListNode<T>*& ll) { + LinkedListNode<T>* previous = nullptr; + LinkedListNode<T>* next = nullptr; + LinkedListNode<T>* iterate = ll; + + while(iterate) { + next = iterate->next; + iterate->next = previous; + previous = iterate; + iterate = next; + } + + ll = previous; +} + +void example() { + LinkedListNode<int>* ll = new LinkedListNode(1, new LinkedListNode(2, new LinkedListNode(3, new LinkedListNode(4)))); + printLinkedList(ll); + reverseLinkedList(ll); + printLinkedList(ll); + freeList(ll); +}
\ No newline at end of file |
