707.设计链表

 

 

class MyLinkedList {
public:
   
    //定义链表结构体
    struct LinkedNode{
        int val;
         LinkedNode* next;
         LinkedNode(int val):val(val),next(nullptr){}
    };
    MyLinkedList(){
          _head = new LinkedNode(0);
         len = 0;
    }
    
    
    int get(int index) {
        if(index>=len||index<0)return -1;
        LinkedNode* cnt=_head;
        while(index--)cnt=cnt->next;
        return cnt->next->val;
    }
    
    void addAtHead(int val) {
        LinkedNode* newNode = new LinkedNode(val);
        newNode->next = _head->next;
        _head->next = newNode;
        len++;
    }
    
    void addAtTail(int val) {
        LinkedNode* newNode=new LinkedNode(val);
        LinkedNode* cnt=_head;
        while(cnt->next!=nullptr)cnt=cnt->next;
        cnt->next=newNode;
        len++;
        
    }
    
    void addAtIndex(int index, int val) {
        if(index>len)return ;
        if(len==index){
             addAtTail(val);return ;
        }
        else if(index<0){
             addAtHead(val);return ;
        }
        LinkedNode* newNode=new LinkedNode(val);
        LinkedNode* cnt=_head;
        while(index--)cnt=cnt->next;
        newNode->next=cnt->next;
        cnt->next=newNode;
        len++;
    }
    
    void deleteAtIndex(int index) {
        if(index>=len||index<0)return ;
        LinkedNode* cnt=_head;
        while(index--)cnt=cnt->next;
        LinkedNode* tp=cnt->next;
        cnt->next=cnt->next->next;
        delete tp;
        len--;
    }

    private:
    int len;
    LinkedNode* _head;
};

 

posted @ 2022-03-22 15:59  小草今天又在摸鱼吗  阅读(20)  评论(0)    收藏  举报