Skip to content

Instantly share code, notes, and snippets.

@reterVision
Last active January 2, 2016 16:39
Show Gist options
  • Save reterVision/827cee8129c2d7de1e48 to your computer and use it in GitHub Desktop.
Save reterVision/827cee8129c2d7de1e48 to your computer and use it in GitHub Desktop.
Linked List
#include <iostream>
using namespace std;
struct Node {
int value;
struct Node* next;
};
class LinkedList {
public:
LinkedList();
~LinkedList();
void AddNode(Node *newNode);
void DeleteNode(Node *node);
void PrintNode();
private:
Node* head;
};
LinkedList::LinkedList()
{
this->head = new Node();
head->next = NULL;
head->value = -1;
}
LinkedList::~LinkedList()
{
Node* curr = this->head->next;
while (curr != NULL)
{
Node* temp = curr->next;
this->DeleteNode(curr);
curr = temp;
}
delete this->head;
}
void LinkedList::AddNode(Node *newNode)
{
Node *temp = this->head;
while(temp->next != NULL)
temp = temp->next;
temp->next = newNode;
}
void LinkedList::DeleteNode(Node *node)
{
Node *prev = this->head;
Node *temp = prev->next;
while (temp != NULL && temp != node)
{
prev = temp;
temp = temp->next;
}
if (temp == NULL)
{
cout << "No such node in list" << endl;
return;
}
prev->next = temp->next;
delete temp;
}
void LinkedList::PrintNode()
{
Node *temp = this->head;
while(temp->next != NULL) {
temp = temp->next;
cout << temp->value << endl;
}
}
int main(int argc, char* argv[])
{
LinkedList linkedList;
Node* newNode_1 = new Node();
newNode_1->value = 1;
newNode_1->next = NULL;
linkedList.AddNode(newNode_1);
Node* newNode_2 = new Node();
newNode_2->value = 2;
newNode_2->next = NULL;
linkedList.AddNode(newNode_2);
Node* newNode_3 = new Node();
newNode_3->value = 3;
newNode_3->next = NULL;
linkedList.AddNode(newNode_3);
// Print all the nodes in list.
linkedList.PrintNode();
// Print after deletion
linkedList.DeleteNode(newNode_2);
cout << "After delete 2" << endl;
linkedList.PrintNode();
// Print after deletion
linkedList.DeleteNode(newNode_3);
cout << "After delete 3" << endl;
linkedList.PrintNode();
return 0;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment