数据结构:双链表list

ops/2025/2/22 15:24:44/

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

list初始化示例:

#include <list>int n = 7;std::list<int> lst; // 初始化一个空的双向链表 lststd::list<int> lst(n); // 初始化一个大小为 n 的链表 lst,链表中的值默认都为 0std::list<int> lst{1, 3, 5}; // 初始化一个包含元素 1, 3, 5 的链表 lststd::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;    // 检查链表是否为空,输出:falsecout << lst.size() << endl;    // 获取链表的大小,输出:5lst.push_front(0);    // 在链表头部插入元素 0lst.push_back(6);    // 在链表尾部插入元素 6cout << lst.front() << " " << lst.back() << endl;    // 获取链表头部和尾部元素,输出:0 6lst.pop_front();    // 删除链表头部元素lst.pop_back();    // 删除链表尾部元素auto it = lst.begin();    // 在链表中插入元素advance(it, 2);    // 移动到第三个位置lst.insert(it, 99);    // 在第三个位置插入 99it = lst.begin();    // 删除链表中某个元素advance(it, 1);    // 移动到第二个位置lst.erase(it);    // 删除第二个位置的元素// 遍历链表// 输出:1 99 3 4 5for (int val : lst) {cout << val << " ";}cout << endl;return 0;
}

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


http://www.ppmy.cn/ops/160534.html

相关文章

基于SpringBoot的智慧家政服务平台系统设计与实现的设计与实现(源码+SQL脚本+LW+部署讲解等)

专注于大学生项目实战开发,讲解,毕业答疑辅导&#xff0c;欢迎高校老师/同行前辈交流合作✌。 技术范围&#xff1a;SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容&#xff1a;…

深度学习-6.用于计算机视觉的深度学习

Deep Learning - Lecture 6 Deep Learning for Computer Vision 简介深度学习在计算机视觉领域的发展时间线 语义分割语义分割系统的类型上采样层语义分割的 SegNet 架构软件中的SegNet 架构数据标注 目标检测与识别目标检测与识别问题两阶段和一阶段目标检测与识别两阶段检测器…

leetcode刷题第十三天——二叉树Ⅲ

本次刷题顺序是按照卡尔的代码随想录中给出的顺序 翻转二叉树 226. 翻转二叉树 /*** Definition for a binary tree node.* struct TreeNode {* int val;* struct TreeNode *left;* struct TreeNode *right;* };*//*总体思路就是&#xff0c;对于每一个结点&…

单词接龙--蒟蒻解析

我是觉得这道题目巨难,所以认真写了一篇博客,也可能是我是蒟蒻的原因吧 ​​​​​​​P1019 [NOIP 2000 提高组] 单词接龙 - 洛谷https://www.luogu.com.cn/problem/P1019 题目说每个单词只能用两次,所以我们直接将这组单词复制一次,弄成两组相同的单词,然后在比较前后缀相同…

linux 安装启动zookeeper全过程及遇到的坑

1、下载安装zookeeper 参考文章&#xff1a;https://blog.csdn.net/weixin_48887095/article/details/132397448 2、启动失败 1、启动失败JAVA_HOME is not set and java could not be found in PATH 已安装 JAVA 配置了JAVA_HOME,还是报错解决方法&#xff1a;参考&#xf…

ubuntu ffmpeg 安装踩坑

ffmpeg 安装踩坑 安装命令: sudo apt update sudo apt install ffmpeg如果以上命令没有报错&#xff0c;那么恭喜你很幸运&#xff0c;可以关闭这篇文章了&#xff01; 如果跟我一样&#xff0c;遇到如下报错&#xff0c;可以接着往下看&#xff1a; 报错信息&#xff1a; …

OSPF | 理论 / 实验

注&#xff1a;本文为 “OSPF” 相关文章合辑。 本专栏已经有一些关于 OSPF 的文章&#xff0c;偶然发现本文作者对 OSPF 知识点覆盖很全面&#xff0c;特汇记一份于此。 OSPF 全网最详解&#xff08;理论及配置&#xff09; Lxyand1 于 2024-12-12 10:46:50 发布 一。简介 …

如何确定服务器是否被黑客入侵爆破

服务器被黑客入侵爆破&#xff08;如暴力破解密码或利用漏洞攻击&#xff09;是网络安全中常见的威胁之一。这类攻击可能导致数据泄露、服务中断甚至系统完全失控。本文将详细介绍如何检测服务器是否被黑客入侵爆破&#xff0c;并提供实用的代码示例和解决方案。 一、黑客入侵…