Skip to content

Commit

Permalink
Added Reverse Linked List
Browse files Browse the repository at this point in the history
  • Loading branch information
Ace-Krypton committed Oct 3, 2023
1 parent bda7ae3 commit d55e9aa
Show file tree
Hide file tree
Showing 6 changed files with 105 additions and 1 deletion.
22 changes: 22 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -1283,4 +1283,26 @@ add_executable(OddEvenLinkedList
target_link_libraries(
OddEvenLinkedList
GTest::gtest_main
)

# Reverse Linked List
add_executable(ReverseLinkedList
Easy/ReverseLinkedList/include/solution.hpp
Easy/ReverseLinkedList/tests/test.cpp
)

target_link_libraries(
ReverseLinkedList
GTest::gtest_main
)

# Maximum Twin Sum of a Linked List
add_executable(MaximumTwinSumOfALinkedList
Medium/MaximumTwinSumOfALinkedList/include/solution.hpp
Medium/MaximumTwinSumOfALinkedList/tests/test.cpp
)

target_link_libraries(
MaximumTwinSumOfALinkedList
GTest::gtest_main
)
45 changes: 45 additions & 0 deletions Easy/ReverseLinkedList/include/solution.hpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
#pragma once

#include <vector>
#include <iostream>
#include <algorithm>
#include <gtest/gtest.h>

struct ListNode {
int32_t value;
ListNode *next;
};

class Solution {
public:
static auto reverse_list(ListNode *head) -> ListNode* {
if (head == nullptr) return head;

ListNode *current = head;
ListNode *prev = nullptr;

while (current != nullptr) {
ListNode *next = current->next;
current->next = prev;
prev = current;
current = next;
}

return prev;
}

static auto insert(ListNode **head_ref,
const int32_t new_value) -> void {
auto *node = new ListNode();
node->value = new_value;
node->next = (*head_ref);
(*head_ref) = node;
}

static auto print(ListNode *head) -> void {
while (head != nullptr) {
std::cout << head->value << ' ';
head = head->next;
}
}
};
17 changes: 17 additions & 0 deletions Easy/ReverseLinkedList/tests/test.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
#include "../include/solution.hpp"

auto main() -> int {
ListNode *node = nullptr;
Solution::insert(&node, 5);
Solution::insert(&node, 4);
Solution::insert(&node, 3);
Solution::insert(&node, 2);
Solution::insert(&node, 1);

Solution::print(node);
std::cout << '\n';
node = Solution::reverse_list(node);
Solution::print(node);

return 0;
}
20 changes: 20 additions & 0 deletions Medium/MaximumTwinSumOfALinkedList/include/solution.hpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
#pragma once

#include <vector>
#include <iostream>
#include <algorithm>
#include <gtest/gtest.h>

struct ListNode {
int32_t value;
ListNode *next;
};

class Solution {
public:
static auto pair_sum(ListNode *head) -> int32_t {

}

static auto insert(ListNode **head_ref)
};
Empty file.
2 changes: 1 addition & 1 deletion Medium/ReverseLinkedListII/include/solution.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ class Solution {
ListNode *prev = dummy;
ListNode *curr = head;

for (std::size_t i = 1; i < left; ++i) {
for (size_t i = 1; i < left; ++i) {
prev = curr;
curr = curr->next;
}
Expand Down

0 comments on commit d55e9aa

Please sign in to comment.