Design your implementation of the linked list. You can choose to use the singly linked
list or the doubly linked list. A node in a singly linked list should have two
attributes: val
and next
. val
is the value of
the current node, and next
is a pointer/reference to the next
node. If you want to use the doubly linked list, you will need one more attribute
prev
to indicate the previous node in the linked list. Assume all nodes in the
linked list are 0-indexed.
Implement these functions in your linked list class:
index
-th node in the linked
list. If the index is invalid, return -1
.
val
before the first element of
the linked list. After the insertion, the new node will be the first node of the linked
list.
val
to the last element of the
linked list.
val
before the index
-th node
in the linked list. If index
equals to the length of linked
list, the node will be appended to the end of linked list. If index is greater than the
length, the node will not be inserted. If index is negative, the node will be inserted
at the head of the list.
index
-th node in the linked
list, if the index is valid.
Example:
MyLinkedList linkedList = new MyLinkedList(); linkedList.addAtHead(1); linkedList.addAtTail(3); linkedList.addAtIndex(1, 2); // linked list becomes 1->2->3 linkedList.get(1); // returns 2 linkedList.deleteAtIndex(1); // now the linked list is 1->3 linkedList.get(1); // returns 3
Note:
[1, 1000]
.[1, 1000]
.