leetcodeSolution to some Leetcode problems written in C++ |
git clone git://git.dimitrijedobrota.com/leetcode.git |
Log | Files | Refs | README | LICENSE |
0707.cpp (1556B)
0 class MyLinkedList {
1 struct Node {
2 int val;
3 Node *next;
5 Node(int val, Node *next = nullptr) : val(val), next(next) {}
6 };
8 Node *head = nullptr, *tail = nullptr;
9 int size = 0;
11 public:
12 MyLinkedList() {}
14 int get(int index) {
15 if (index >= size) return -1;
17 Node *p = head;
18 while (index--)
19 p = p->next;
20 return p->val;
21 }
23 void addAtHead(int val) {
24 if (!head)
25 head = tail = new Node(val);
26 else
27 head = new Node(val, head);
28 size++;
29 }
31 void addAtTail(int val) {
32 if (!head)
33 head = tail = new Node(val);
34 else
35 tail = tail->next = new Node(val);
36 size++;
37 }
39 void addAtIndex(int index, int val) {
40 if (index > size) return;
42 Node *p = head;
43 size++;
45 if (index == 0) {
46 addAtHead(val);
47 return;
48 }
50 while (--index)
51 p = p->next;
52 p->next = new Node(val, p->next);
53 if (p == tail) tail = p->next;
54 }
56 void deleteAtIndex(int index) {
57 if (index >= size) return;
59 Node *t, *p;
60 size--;
62 if (index == 0) {
63 cout << "head" << endl;
64 t = head;
65 head = head->next;
66 delete t;
67 return;
68 }
70 p = head;
71 while (--index)
72 p = p->next;
74 t = p->next;
75 p->next = p->next->next;
76 if (t == tail) tail = p;
77 delete t;
78 }
79 };