diff options
Update and rename Linked-List-Perm.cpp to Linked-List-Palindrome.cpp
1 files changed, 28 insertions, 0 deletions
| -rw-r--r-- | Seminar06/Linked-List-Palindrome.cpp | 28 |
diff --git a/Seminar06/Linked-List-Palindrome.cpp b/Seminar06/Linked-List-Palindrome.cpp new file mode 100644 index 0000000..8a627a9 --- /dev/null +++ b/Seminar06/Linked-List-Palindrome.cpp @@ -0,0 +1,28 @@ +#include"../Seminar04/linked-list-utils.h" + +bool isLinkedListPalRec(const LinkedListNode<int>*& begin, const LinkedListNode<int>* end) { + if(end == nullptr) + return true; + + bool res = isLinkedListPalRec(begin, end->next) && (begin->data == end->data); + + begin = begin->next; + return res; +} + +template<class T> +bool isLinkedListPal(const LinkedListNode<T>* ll) { + if(ll == nullptr) + return true; + + const LinkedListNode<int>* begin = ll; + const LinkedListNode<int>* end = ll; + + return isLinkedListPalRec(begin, end); +} + +int main() { + LinkedListNode<int>* ll = new LinkedListNode(0, new LinkedListNode(1, new LinkedListNode(1))); + + std::cout << isLinkedListPal(ll); +} |
