Website Summary Files Commits Branches @commit @diff @stats
path: root / Seminar06 / Linked-List-Palindrome.cpp
diff options
context:
space:
mode:
1 files changed, 28 insertions, 0 deletions
-rw-r--r--Seminar06/Linked-List-Palindrome.cpp28
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);
+}