LEEDCODE 707设计链表

cpp 复制代码
class MyLinkedList {
public:
    struct ListNode
    {
        int val;
        ListNode* next;
        ListNode(int val): val(val),next(nullptr){}
    };
    MyLinkedList() {
        _dummyhead = new ListNode(0);
        _size = 0;
    }
    
    int get(int index) {
        if(index >= 0 && index < _size){
            ListNode* cur = _dummyhead->next;
            for(int i = 0; i < index; i++){
                cur = cur->next;
            }
            return cur->val;
        }
        else
            return -1;
        
    }
    
    void addAtHead(int val) {
        addAtIndex(0,val);
    }
    
    void addAtTail(int val) {
        addAtIndex(_size,val);
    }
    
    void addAtIndex(int index, int val) {
        if(index < 0)
            index = 0;
        if(index <= _size && index >= 0 ){
            ListNode* pre = _dummyhead;
            ListNode* cur = _dummyhead->next;
            for(int i = 0;i < index; i++){
                pre = cur;
                cur = cur->next;
            }
            ListNode* p = new ListNode(val);
            p->next = cur;
            pre->next = p;
            _size +=1;
        }
            
    }
    
    void deleteAtIndex(int index) {
        if(index >= 0 && index < _size){
            ListNode* cur = _dummyhead;
            for(int i = 0; i < index; i++){
                cur = cur->next;
            }
            ListNode* p = cur->next;
            cur->next = p->next;
            delete p;
            _size -= 1;
        }
    }
private:
    ListNode* _dummyhead;
    int _size; // 正确声明 _size 成员变量
};

/**
 * 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);
 */
相关推荐
月落归舟1 小时前
排序算法---(一)
数据结构·算法·排序算法
今儿敲了吗1 小时前
DS-3 循环队列判断队满
数据结构·笔记·学习
liuyao_xianhui2 小时前
优选算法_翻转链表_头插法_C++
开发语言·数据结构·c++·算法·leetcode·链表·动态规划
Book思议-2 小时前
【数据结构实战】循环队列FIFO 特性生成六十甲子(天干地支纪年法),实现传统文化里的 “时间轮回”
数据结构·算法·
cpp_25012 小时前
P1796 汤姆斯的天堂梦
数据结构·c++·算法·题解·洛谷·线性dp
凌波粒2 小时前
LeetCode--19.删除链表的倒数第 N 个结点(链表)
java·算法·leetcode·链表
Mem0rin2 小时前
[Java/数据结构]顺序表之ArrayList
java·开发语言·数据结构
ShineWinsu3 小时前
Anaconda被误删后的抢救手册大纲
数据结构
重生之我是Java开发战士3 小时前
【广度优先搜索】多源BFS:矩阵,飞地的数量,地图中的最高点,地图分析
数据结构·算法·矩阵·广度优先
玛卡巴卡ldf3 小时前
【LeetCode 手撕算法】(矩阵)73-矩阵置零、54-螺旋矩阵(贪吃蛇)、48-旋转图像
java·数据结构·算法·leetcode·力扣