forked from RajwardhanShinde/LeetCode-Solutions
-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathDesignLinkedList.cpp
85 lines (82 loc) · 2 KB
/
DesignLinkedList.cpp
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
class MyLinkedList {
private:
struct node{
int val;
node *next;
};
node *head;
node *tail;
int size;
public:
MyLinkedList() {
head = NULL;
tail = NULL;
size = 0;
}
int get(int index) {
if(index >= size|| index < 0)
return -1;
node *cur = new node;
cur = head;
for(int i = 0;i<index;++i){
cur = cur->next;
}
return cur->val;
}
void addAtHead(int val) {
node *temp = new node();
temp->val = val;
temp->next = head;
head = temp;
if(size==0) tail = temp;
++size;
}
void addAtTail(int val) {
node *temp = new node();
temp->val = val;
if(size==0) {
tail = temp;
head = temp;
}
tail->next = temp;
tail = temp;
++size;
}
void addAtIndex(int index, int val) {
if(index>size || index < 0) return;
else if(index == 0) {
addAtHead(val);
return;
}
else if(index == size) {
addAtTail(val);
return;
}
node *cur = new node();
cur = head;
for(int i = 0;i<index-1;++i){
cur = cur->next;
}
node *temp = new node();
temp->val = val;
temp->next = cur->next;
cur->next = temp;
++size;
}
void deleteAtIndex(int index) {
if(index>=size || index < 0) return;
else if(index == 0){
head = head->next;
--size;
return;
}
node *cur = new node();
cur = head;
for(int i = 0;i<index-1;++i){
cur = cur->next;
}
cur->next= cur->next->next;
if(index == size-1) tail = cur;
--size;
}
};