代码解决
class MyLinkedList {
public:
// 定义链表节点结构体
struct LinkedNode {
int val;
LinkedNode* next;
LinkedNode(int val):val(val), next(nullptr){}
};
MyLinkedList() {
dummyhead =new LinkedNode(0);
size=0;
}
int get(int index) {
if (index > (size - 1) || index < 0) {
return -1;
}
LinkedNode*node=dummyhead->next;
while(index){
node=node->next;
index--;
}
return node->val;
}
void addAtHead(int val) {
LinkedNode*node=new LinkedNode(val);
node->next=dummyhead->next;
dummyhead->next=node;
size++;
}
void addAtTail(int val) {
LinkedNode*node=new LinkedNode(val);
LinkedNode*cur=dummyhead;
while(cur->next!=nullptr){
cur=cur->next;
}
node->next=cur->next;
cur->next=node;
size++;
}
void addAtIndex(int index, int val) {
if(index > size) return;
if(index < 0) index = 0;
LinkedNode* newNode = new LinkedNode(val);
LinkedNode* cur = dummyhead;
while(index){
cur=cur->next;
index--;
}
newNode->next=cur->next;
cur->next=newNode;
size++;
}
void deleteAtIndex(int index) {
if (index >= size || index < 0) {
return;
}
LinkedNode* newNode = dummyhead;
LinkedNode* cur = dummyhead;
while(index){
cur=cur->next;
index--;
}
LinkedNode* tmp = cur->next;
cur->next = cur->next->next;
delete tmp;
tmp=nullptr;
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);
*/
实现思路