Skip to content

Instantly share code, notes, and snippets.

@bitnenfer
Created January 30, 2024 01:30
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save bitnenfer/a8dcf9c6aa46671500a1c4a65a535636 to your computer and use it in GitHub Desktop.
Save bitnenfer/a8dcf9c6aa46671500a1c4a65a535636 to your computer and use it in GitHub Desktop.
Reverse linked list
struct LinkedList
{
struct Node
{
Node* next;
int value;
};
LinkedList(std::initializer_list<int> list)
{
Node* node = nullptr;
for (int value : list)
{
Node* newNode = new Node();
newNode->next = nullptr;
newNode->value = value;
if (root == nullptr)
{
root = newNode;
node = newNode;
}
else
{
node->next = newNode;
node = newNode;
}
}
}
~LinkedList()
{
Node* node = root;
while (node != nullptr)
{
Node* next = node->next;
delete node;
node = next;
}
}
void reverse()
{
Node* prev = nullptr;
Node* node = root;
while (node != nullptr)
{
Node* next = node->next;
node->next = prev;
prev = node;
node = next;
}
root = prev;
}
void print() const
{
printFmt("{ ");
for (const Node* node = root; node != nullptr; node = node->next)
{
printFmt("%d ", node->value);
}
printFmt("}\n");
}
Node* root = nullptr;
};
void test2()
{
LinkedList list1 = { 1, 2, 3, 4, 5, 6 };
list1.print();
list1.reverse();
list1.print();
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment