IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> Leetcode总结——2.链表 -> 正文阅读

[数据结构与算法]Leetcode总结——2.链表

单链表

在这里插入图片描述
Leetcode707.设计链表

class MyLinkedList {
    public:
    struct Node{
         int val;
         Node *next;
         Node (int x):val(x),next(NULL){}
    };
    int size;
    Node *head;

    MyLinkedList() {
       //初始化一个头结点head,相当于定义了一个空结点作为保护节点,本身不算节点
       head=new Node(0);
       //链表长度
       size=0;

    }
    
    int get(int index) {
        if(index<0||index>=size)return -1;
        Node *cur=head->next;
        while(index--){
            cur=cur->next;
        }
        return cur->val;
    }
    
    void addAtHead(int val) {
        Node *newNode =new Node(val);
        newNode->next=head->next;
        head->next=newNode;
        size++;
    }
    
    void addAtTail(int val) {
         Node *newNode=new Node(val);
         Node *cur =head;
         while(cur->next!=NULL){
             cur=cur->next;
         }
         newNode->next=cur->next;
         cur->next=newNode;
         size++;

    }
    
    void addAtIndex(int index, int val) {
        if(index<=0){
            addAtHead(val);
        }else if(index==size){
            addAtTail(val);
        }else if(index>size){
            return;
        }else{
            Node *newNode=new Node(val);
            Node *cur=head;
            while(index--){
               cur=cur->next;
            }
            newNode->next=cur->next;
            cur->next=newNode;
            size++;
        }
    }
    
    void deleteAtIndex(int index) {

         if(index<0||index>=size)return;

         Node *cur=head;

         while(index--){
             cur=cur->next;
         }
         cur->next=cur->next->next;
         size--;
    }
   
};

双链表

在这里插入图片描述
Leetcode707.设计链表

class MyLinkedList {
public:
    struct Node{
        int val;
        Node *next;
        Node *prev;
        Node(int x):val(x),prev(NULL),next(NULL){}
    };

    int size;
    Node *head;
    Node *tail;

    MyLinkedList() {
        size=0;
        head=new Node(0);
        tail=new Node(0);
        head->next=tail;
        tail->prev=head;
    }
    
    ~MyLinkedList(){
        delete head;
        delete tail;
    }

    int get(int index) {
        if(index<0||index>=size)return -1;
        Node *cur=head->next;
        while(index--){
            cur=cur->next;
        }
        return cur->val;
    }
    
    void addAtHead(int val) {
        Node *newNode =new Node(val);
        newNode->next=head->next;
        head->next->prev=newNode;
        head->next=newNode;
        newNode->prev=head;
        size++;
    }
    
    void addAtTail(int val) {
        Node *newNode =new Node(val);
        tail->prev->next=newNode;
        newNode->prev=tail->prev;
        newNode->next=tail;
        tail->prev=newNode;
        size++;
        

    }
    
    void addAtIndex(int index, int val) {
        if(index<=0){
            addAtHead(val);
        }else if(index==size){
            addAtTail(val);
        }else if(index>size){
            return;
        }else{
             Node *cur=head;
             Node *newNode=new Node(val);
             while(index--){
                 cur=cur->next;
             }
             newNode->next=cur->next;
             cur->prev=newNode;
             cur->next=newNode;
             newNode->prev=cur;
             size++;

        }
       
    }
    
    void deleteAtIndex(int index) {
         if(index<0||index>=size)return;

             Node *cur=head;
             
             while(index--){
                 cur=cur->next;
             }
             cur->next->next->prev=cur;
             cur->next=cur->next->next;
             size--;

    }
};

链表的初始化:
为了防止链表为空时进行访问出错,添加节点作为保护节点
单链表添加head节点
双链表添加head tail两个节点
在这里插入图片描述
在这里插入图片描述

注意链表进行翻转等操作时,由于链表最后一个结点指向空,实际要修改n条边而不是n-1条。

206.反转链表
25.k个一组翻转链表
141.环形链表
142.环形链表Ⅱ

  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2021-10-16 19:53:25  更:2021-10-16 19:55:45 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 6:25:03-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码