Design Linked List LeetCode solution in C++

1
class MyLinkedList {
2
struct Node {
3
int val;
4
Node *next, *prev;
5
Node(int x) {
6
val = x, next = prev = NULL;
7
}
8
};
9
Node *head;
10
int size;
11

12
public:
13
MyLinkedList() {
14
head = NULL;
15
size = 0;
16
}
17

18
int get(int index) {
19
if (index >= size or index < 0) return -1;
20
Node *ptr = head;
21
for (int i = 0; i < index; i++) ptr = ptr->next;
22
return ptr->val;
23
}
24

25
void addAtHead(int val) {
26
Node *newNode = new Node(val);
27
newNode->next = head;
28
if (head) head->prev = newNode;
29
head = newNode;
30
size++;
31
}
32

33
void addAtTail(int val) {
34
addAtIndex(size, val);
35
}
36

37
void addAtIndex(int index, int val) {
38
if (index < 0 or index > size) return;
39
if (index == 0) {
40
addAtHead(val);
41
return;
42
}
43
Node *newNode = new Node(val);
44
Node *prev = head;
45
for (int i = 0; i < index - 1; i++) {
46
prev = prev->next;
47
}
48
newNode->next = prev->next;
49
prev->next = newNode;
50
newNode->prev = prev;
51
if (newNode->next) newNode->next->prev = newNode;
52
size++;
53
}
54

55
void deleteAtIndex(int index) {
56
if (index >= size or index < 0) return;
57
if (index == 0) {
58
Node *temp = head;
59
head = head->next;
60
delete temp;
61
size--;
62
return;
63
}
64
Node *del = head;
65
for (int i = 0; i < index; i++) {
66
del = del->next;
67
}
68
if (del->prev) del->prev->next = del->next;
69
if (del->next) del->next->prev = del->prev;
70
delete del;
71
size--;
72
}
73
};

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0