数据结构:双链表list

news/2025/2/22 22:31:11

list 是 C++ 标准库中的双向链表容器。

list初始化示例:

#include <list>

int n = 7;


std::list<int> lst; // 初始化一个空的双向链表 lst


std::list<int> lst(n); // 初始化一个大小为 n 的链表 lst,链表中的值默认都为 0


std::list<int> lst{1, 3, 5}; // 初始化一个包含元素 1, 3, 5 的链表 lst


std::list<int> lst(n, 2); // 初始化一个大小为 n 的链表 lst,其中值都为 2

list常用操作示例:

#include <iostream>
#include <list>
using namespace std;

int main() {

    list<int> lst{1, 2, 3, 4, 5};    // 初始化链表


    cout << lst.empty() << endl;    // 检查链表是否为空,输出:false


    cout << lst.size() << endl;    // 获取链表的大小,输出:5


    lst.push_front(0);    // 在链表头部插入元素 0

    lst.push_back(6);    // 在链表尾部插入元素 6


    cout << lst.front() << " " << lst.back() << endl;    // 获取链表头部和尾部元素,输出:0 6

    lst.pop_front();    // 删除链表头部元素

    lst.pop_back();    // 删除链表尾部元素


    auto it = lst.begin();    // 在链表中插入元素

    advance(it, 2);    // 移动到第三个位置

    lst.insert(it, 99);    // 在第三个位置插入 99


    it = lst.begin();    // 删除链表中某个元素

    advance(it, 1);    // 移动到第二个位置

    lst.erase(it);    // 删除第二个位置的元素

    // 遍历链表
    // 输出:1 99 3 4 5
    for (int val : lst) {
        cout << val << " ";
    }
    cout << endl;

    return 0;
}

 一般情况下,我们在头部增删元素会使用双链表,因为他在头部增删元素的效率比vector高。但我们通过索引访问元素时一般会使用vector。


http://www.niftyadmin.cn/n/5862808.html

相关文章

计算机网络:应用层 —— 文件传送协议 FTP

文章目录 FTP 是什么&#xff1f;FTP 的应用FTP 的基本工作原理主动模式被动模式 总结 FTP 是什么&#xff1f; 将某台计算机中的文件通过网络传送到可能相很远的另一台计算机中&#xff0c;是一项基本的网络应用&#xff0c;即文件传送。 文件传送协议FTP&#xff08;File T…

使用Docker Desktop部署GitLab

1. 环境准备 确保Windows 10/11系统支持虚拟化技术&#xff08;需在BIOS中开启Intel VT-x/AMD-V&#xff09;内存建议≥8GB&#xff0c;存储空间≥100GB 2. 安装Docker Desktop 访问Docker官网下载安装包安装时勾选"Use WSL 2 instead of Hyper-V"&#xff08;推荐…

【MCU输入捕获模式】

MCU输入捕获模式 目录 MCU输入捕获模式引言一、基本概念二、实现原理三、应用案例四、优势与局限五、配置与注意事项&#xff08;以STM32为例&#xff09; 引言 输入捕获模式 &#xff08;Input Capture Mode&#xff09;是一种用于捕获外部输入信号变化的微控制器&#xff08…

js中 ES6 新特性详解

ES6&#xff08;ECMAScript 2015&#xff09;是 JavaScript 的一次重大更新&#xff0c;引入了许多新的特性&#xff0c;使 JavaScript 代码更加简洁、可读和高效。以下是 ES6 的主要新特性及其原理 1. let 和 const 关键字 原理解析 1.1 作用域 var 关键字的作用域&#xf…

一篇文章理解常用的前端设计模式

前端设计模式 一.设计模式概览 设计模式是针对软件设计开发过程中反复出现的某类问题的通用解决方案。设计模式更多的是指导思想和方法论&#xff0c;而不是现成的代码&#xff0c;每种设计模式都有每种语言中的具体实现方式。学习设计模式更多是理解各个模式的内在思想和解决…

黑马点评自学03

分布式锁 分布式锁介绍 分布式锁&#xff1a;满足在分布式系统或者集群模式下多进程可见并且进程间获取锁的操作是互斥的锁。 在之前的测试中&#xff0c;当我们进入到集群或分布式的环境中时&#xff0c;一人一单业务在不同集群中可以被同时给用户id加锁&#xff0c;出现了…

娱乐使用,可以生成转账、图片、聊天等对话内容

软件介绍 今天要给大家介绍一款由吾爱大佬 lifeixue 开发的趣味软件。它的玩法超丰富&#xff0c;能够生成各式各样的角色&#xff0c;支持文字聊天、发红包、转账、发语音以及分享图片等多种互动形式&#xff0c;不过在分享前得着重提醒&#xff0c;此软件仅供娱乐&#xff0…

小游戏-记忆卡牌

1、游戏开始4张卡牌&#xff0c;每次过关后新增两张&#xff0c;总共64张卡&#xff0c;可以修改数组EMOJIS&#xff0c;添加表情&#xff0c;增加卡牌数量 2、新建txt文件&#xff0c;将代码粘贴进去&#xff0c;保存后&#xff0c;将txt修改后缀名为html的格式 <!DOCTYPE…