classMyLinkedList{public://结点结构体定义structLinkedNode{int val;
LinkedNode* next;LinkedNode(int val):val(val),next(nullptr){}};//初始化链表MyLinkedList(){
dummyHead =newLinkedNode(0);
size =0;}intget(int index){if(index<0|| index >(size -1))return-1;
LinkedNode* cur = dummyHead -> next ;for(int i = index; i >0; i--){
cur = cur -> next;}return cur -> val;}voidaddAtHead(int val){
LinkedNode* newNode =newLinkedNode(val);
newNode -> next = dummyHead -> next;
dummyHead -> next = newNode;
size++;}voidaddAtTail(int val){
LinkedNode* newNode =newLinkedNode(val);
LinkedNode* cur = dummyHead;while(cur -> next !=nullptr){
cur = cur -> next;}
cur -> next = newNode;// newNode -> next = nullptr;
size++;}voidaddAtIndex(int index,int val){if(index > size)return;if(index <0) index =0;
LinkedNode* newNode =newLinkedNode(val);
LinkedNode* cur = dummyHead;while(index--){
cur = cur -> next;}
newNode -> next = cur -> next;
cur -> next = newNode;
size++;}voiddeleteAtIndex(int index){if(index <0|| index >= size)return;
LinkedNode* cur = dummyHead;
LinkedNode* tmp =nullptr;while(index--){
cur = cur -> next;}
tmp = cur -> next;
cur -> next = cur -> next -> next;delete tmp;
size--;}private:int size;
LinkedNode* dummyHead;};/**
* Your MyLinkedList object will be instantiated and called as such:
* MyLinkedList* obj = new MyLinkedList();
* int param_1 = obj->get(index);
* obj->addAtHead(val);
* obj->addAtTail(val);
* obj->addAtIndex(index,val);
* obj->deleteAtIndex(index);
*/