llllmz

导航

707. 设计链表

心要细,这题才能作对。

class MyLinkedList {
public:
    MyLinkedList() 
        :_size(0), _head(new listedNode(0))
    {}
    
    int get(int index) {
        if(index < 0 || index >= _size) return -1;
        listedNode* cur = _head;
        for(int i = 0; i <= index; ++i){
            cur = cur->next;
        } 
        return cur->value;
    }
    
    void addAtHead(int val) {
        addAtIndex(0, val);
    }
    
    void addAtTail(int val) {
        addAtIndex(_size, val);
    }
    
    void addAtIndex(int index, int val) {
        if(index < 0 || index > _size) return;
        listedNode* temp = new listedNode(val);
        listedNode* preNode = _head; 
        for(int i = 0; i < index; ++i) preNode = preNode->next;
        temp->next = preNode->next;
        preNode->next = temp;
        ++_size;
    }
    
    void deleteAtIndex(int index) {
        if(index < 0 || index >= _size || _size == 0) return;
        --_size;
        listedNode* preNode = _head;
        for(int i = 0; i < index; ++i) preNode = preNode->next;
        listedNode* delNode = preNode->next;
        preNode->next= preNode->next->next;
        delete delNode;
    }
private:
    struct listedNode{
        int value;
        listedNode* next;
        listedNode(int val)
            :value(val), next(nullptr)
        {}
    };
    int _size;
    listedNode* _head;
};

posted on 2024-09-24 18:42  神奇的萝卜丝  阅读(22)  评论(0)    收藏  举报