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 @   小草今天又在摸鱼吗  阅读(17)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
点击右上角即可分享
微信分享提示