Design Linked List LeetCode solution in C++
1class MyLinkedList {2struct Node {3int val;4Node *next, *prev;5Node(int x) {6val = x, next = prev = NULL;7}8};9Node *head;10int size;1112public:13MyLinkedList() {14head = NULL;15size = 0;16}1718int get(int index) {19if (index >= size or index < 0) return -1;20Node *ptr = head;21for (int i = 0; i < index; i++) ptr = ptr->next;22return ptr->val;23}2425void addAtHead(int val) {26Node *newNode = new Node(val);27newNode->next = head;28if (head) head->prev = newNode;29head = newNode;30size++;31}3233void addAtTail(int val) {34addAtIndex(size, val);35}3637void addAtIndex(int index, int val) {38if (index < 0 or index > size) return;39if (index == 0) {40addAtHead(val);41return;42}43Node *newNode = new Node(val);44Node *prev = head;45for (int i = 0; i < index - 1; i++) {46prev = prev->next;47}48newNode->next = prev->next;49prev->next = newNode;50newNode->prev = prev;51if (newNode->next) newNode->next->prev = newNode;52size++;53}5455void deleteAtIndex(int index) {56if (index >= size or index < 0) return;57if (index == 0) {58Node *temp = head;59head = head->next;60delete temp;61size--;62return;63}64Node *del = head;65for (int i = 0; i < index; i++) {66del = del->next;67}68if (del->prev) del->prev->next = del->next;69if (del->next) del->next->prev = del->prev;70delete del;71size--;72}73};