Coding Caprice - Linked-List 1

203. 移除链表元素

cpp 复制代码
class Solution {
public:
    ListNode* removeElements(ListNode* head, int val) {
        ListNode* Head = new ListNode();
        Head->next = head;
        ListNode* out1 = Head;
        while(Head!=nullptr && Head->next!=nullptr){
            if(Head->next->val == val){
                ListNode* tmp = Head->next->next;
                delete Head->next; 
                Head->next = tmp;
            }else{
                Head = Head->next;
            }
        }
        ListNode* out2 = out1->next;
        delete out1;
        return out2;
    }
};

707. 设计链表

cpp 复制代码
struct ln{
    int val;
    ln* next;
    ln():val(0), next(nullptr){}
    ln(int val):val(val), next(nullptr){}
    ln(int val, ln* next):val(val), next(next){}
};
class MyLinkedList {
public:
    ln *head = nullptr;
    ln *tail = nullptr;
    int num = 0;
    MyLinkedList() {
        head = new ln();
        tail = head;
    }
    
    ln* find(int index){
        ln* ob = head;
        for(int i=0; i<index; ++i){
            if(ob!=nullptr){
                ob = ob->next;
            }else{
                return nullptr;                                                                        
            }
        }
        return ob;
    }
    
    int get(int index) {
        ln* ob = find(index);
        if(ob==nullptr){return -1;}
        ob = ob->next;
        return ob==nullptr? -1: ob->val;
    }
    
    void addAtHead(int val) {
        ln* n = head->next;
        head->next = new ln(val, n);
        num++;
    }
    
    void addAtTail(int val) {
        ln* n = find(num);
        n->next = new ln(val);
        num++;
    }
    
    void addAtIndex(int index, int val) {
        ln* ob = find(index);
        if(ob==nullptr){return;}
        ln* tmp = ob->next;
        ob->next = new ln(val, tmp);
        num++;
    }
    
    void deleteAtIndex(int index) {
        ln* ob = find(index);
        if(ob==nullptr){return;}
        ln* tmp = ob->next;
        if(tmp==nullptr){return;}
        tmp = tmp->next;
        delete ob->next;
        ob->next = tmp;
        num--;
    }
};

206. 反转链表

cpp 复制代码
class Solution {
public:
    ListNode* reverseList(ListNode* head) {
        if(head==nullptr){return nullptr;}
        ListNode* tmp = nullptr;
        ListNode* out = nullptr;
        while(head!=nullptr){
            tmp = head->next;
            head->next = out;
            out = head;
            head = tmp;
        }
        return out;
    }
};
相关推荐
Code-keys1 分钟前
Android Codec2 Filter 算法模块开发指南
android·算法·音视频·视频编解码
无忧智库14 分钟前
低空经济新基建:构建低空飞行大数据中心与行业应用算法工厂的全景式蓝图(WORD)
算法
闻缺陷则喜何志丹1 小时前
【背包 组合】P7552 [COCI 2020/2021 #6] Anagramistica|普及+
c++·算法·背包·洛谷·组合
小章UPUP2 小时前
2026年第十六届MathorCup数学应用挑战赛D题国奖思路
算法
hssfscv2 小时前
软件设计师下午试题四——C语言(N皇后问题、分治、动态规划)
c语言·算法·动态规划
lolo大魔王2 小时前
Go语言的反射机制
开发语言·后端·算法·golang
白羊by2 小时前
Softmax 激活函数详解:从数学原理到应用场景
网络·人工智能·深度学习·算法·损失函数
故事和你912 小时前
洛谷-算法1-7-搜索3
数据结构·c++·算法·leetcode·动态规划
chipsense3 小时前
霍尔电流传感器选型方法论再升级:从800V平台到TMR竞争的全场景决策树
算法·决策树·机器学习·闭环霍尔·tmr传感
CoderYanger3 小时前
14届蓝桥杯省赛Java A 组Q1~Q3
java·开发语言·线性代数·算法·职场和发展·蓝桥杯