-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathLinkedList.cpp
More file actions
111 lines (87 loc) · 2.18 KB
/
Copy pathLinkedList.cpp
File metadata and controls
111 lines (87 loc) · 2.18 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
#include "LinkedList.h"
#include <iostream>
using namespace std;
//constructor
LinkedList::LinkedList() {
head = nullptr;
tail = nullptr;
length = 0;
}
//destructor
LinkedList::~LinkedList() {
Node* temp;
while (head != nullptr) {
temp = head;
head = head->next;
delete temp;
}
tail = nullptr;
length = 0;
}
//prepend element in the linkedlist
void LinkedList::insertAtHead(int data) {
Node* newNode = new Node;
newNode->data = data;
newNode->next = head;
head = newNode;
if (tail == nullptr) {
tail = newNode;
}
length++;
}
//append element in the linkedlist
void LinkedList::insertAtEnd(int data) {
Node* newNode = new Node;
newNode->data = data;
newNode->next = nullptr;
if (head == nullptr) {
head = newNode;
tail = newNode;
}
else {
tail->next = newNode;
tail = newNode;
}
length++;
}
//delete a data anywhere in the linkedlist
void LinkedList::deletedata(int data) {
if (head == nullptr) {
cout << "List is empty" << endl;
return;
}
if (head->data == data) {//List had only one node
Node* temp = head;
head = head->next;
if (head == nullptr) {
tail = nullptr;// after deleting the node, tail must also be reset to null
}
delete temp;
length--;
return;
}
Node* current = head;
while (current->next != nullptr && current->next->data != data) {
current = current->next;
}
if (current->next == nullptr) {
cout << "data not found" << endl;
return;
}
Node* temp = current->next;
current->next = temp->next;
if (temp == tail) {// moving tail back to the previous node as the deleted node was the tail
tail = current;
}
delete temp;
length--;
}
//display elements in the linkedlist
void LinkedList::display() {
Node* temp = head;
while (temp != nullptr) {
cout << temp->data << " -> ";
temp = temp->next;
}
cout << "NULL" << endl;
}