C++数据类型——链表

简介: C++数据类型——链表


C++数据类型——链表

C++中的数据类型就是鼎鼎大名的STL了,里面包含了容器、算法,迭代器。

容器其实际是所谓的数据结构,迭代器是一种特殊的指针,它是容器和算法的胶合剂,利用它能够更加安全快速的对内存进行操作


1. 链表

链表是一种线性表,只不过它是链式存储的,在插入删除上更加快捷。


1.1 链表的出现

这里不得不提一下数组,因为有数组,所以有了链表。

数组是一种固定内存的顺序表,因为内存固定,所以作用有限,并且在插入和删除上更费时间和空间。

链表因此而生,链表在插入和删除方面相比于数组更加显得快捷和方便


1.2 链表的结构

链表是一种数据结构,其简单的代码可以表现为这样

struct ListCode{
    int val;
    ListCode *next;
}

其中一个属性是值,另一个属性是指针,指向下一个ListCode,就像有一条线一样,从当前ListCode链接向下一个ListCode,这可能就是链表中链的由来吧。


1.3 STL中的链表

C++中的STL的链表为List 在头文件<list>中,我们在使用的使用直接拿来用就行了

就像这样:

#include <iostream>
#include <list>
using namespace std;
int main()
{
    list<int> li;  //创建一个链表
    li.push_back(2);  //往链表里添加一个数字2
    li.push_front(5);  //往2前面添加一个5
    Li.push_back(1);  //往2后面添加一个1
    int liSize = li.size();  //li的长度,既个数
    for (list<int>::interator i=li.begin();i!=li.end();i++)  //迭代器用于遍历链表
    {
        cout<<*i;
    }
    cout<<endl;
    return 0;
}

输出结果:521


1.4 liat基本操作

list不支持下标取值,修改元素,只能通过重新赋值

添加元素是由push来做的,有两种方法

一种是插在首位,一种是插在后面

插在首位:push_front()

插在后面:push_back()

删除元素就是pop

同样有两种方法,一前一后

不过还有一个方法是直接清空所有元素的:clear

插在首位:pop_front()

插在后面:pop_back()

查看元素也只有两个方法

查看首位:front()

查看后面:back()

当然也可以通过迭代器来查看

接下来看看这个代码,了解一下基本操作

#include <iostream>
#include <list>
using namespace std;
int main()
{
    list<int> a;        //创建一个
    a.push_back(5);
    a.push_back(2);
    a.push_back(1);
    int size;
    cout << a.front() << endl; //查看第一个元素
    cout << a.back() << endl; //查看最后一个元素
    a.pop_back(); //删除最后一个元素
    cout << a.back() << endl;
    a.pop_front(); //删除第一个元素
    cout << a.front() << endl;
    a.clear(); //清空链表
    size = a.size();
    cout << size << endl;
    return 0;
}


1.5 基本算法

排序:sort()

颠倒:reverse()

#include <iostream>
#include <list>
using namespace std;
int main()
{
    list<int> a;        //创建一个
    a.push_back(5);
    a.push_back(2);
    a.push_back(1);
    a.sort(); //排序后应该是125
    cout << a.front() << endl; //查看第一个元素
    cout << a.back() << endl; //查看最后一个元素
    a.reverse(); //翻转后应该是521
    cout << a.front() << endl; //查看第一个元素
    cout << a.back() << endl; //查看最后一个元素
    return 0;
}

所以输出结果为:

1
5
5
1


目录
打赏
0
0
0
0
5
分享
相关文章
|
15天前
|
公司监控上网软件架构:基于 C++ 链表算法的数据关联机制探讨
在数字化办公时代,公司监控上网软件成为企业管理网络资源和保障信息安全的关键工具。本文深入剖析C++中的链表数据结构及其在该软件中的应用。链表通过节点存储网络访问记录,具备高效插入、删除操作及节省内存的优势,助力企业实时追踪员工上网行为,提升运营效率并降低安全风险。示例代码展示了如何用C++实现链表记录上网行为,并模拟发送至服务器。链表为公司监控上网软件提供了灵活高效的数据管理方式,但实际开发还需考虑安全性、隐私保护等多方面因素。
20 0
公司监控上网软件架构:基于 C++ 链表算法的数据关联机制探讨
【C++数据结构——线性表】单链表的基本运算(头歌实践教学平台习题)【合集】
本内容介绍了单链表的基本运算任务,涵盖线性表的基本概念、初始化、销毁、判定是否为空表、求长度、输出、求元素值、按元素值查找、插入和删除数据元素等操作。通过C++代码示例详细解释了顺序表和链表的实现方法,并提供了测试说明、通 - **任务描述**:实现单链表的基本运算。 - **相关知识**:包括线性表的概念、初始化、销毁、判断空表、求长度、输出、求元素值、查找、插入和删除等操作。 - **测试说明**:平台会对你编写的代码进行测试,提供测试输入和预期输出。 - **通关代码**:给出了完整的C++代码实现。 - **测试结果**:展示了测试通过后的预期输出结果。 开始你的任务吧,祝你成功!
87 5
C++数据类型
C++数据类型
75 2
|
9月前
|
Java JNI开发时常用数据类型与C++中数据类型转换
Java JNI开发时常用数据类型与C++中数据类型转换
330 0
【C++基础】数据类型详解
这篇文章详细介绍了C++中各种基本数据类型,包括整型、浮点型、字符型、字符串型和布尔型,以及它们的使用方式和范围。
72 4
|
7月前
|
C++
c++学习笔记01 基本知识与数据类型
C++学习笔记,涵盖了C++中的常量定义、数据类型、变量内存大小计算、基本数据类型(整型、实型、字符型、字符串型、布尔型)以及转义字符的使用。
59 4
|
8月前
|
C++的list-map链表与映射表
```markdown C++ 中的`list`和`map`提供链表和映射表功能。`list`是双向链表,支持头尾插入删除(`push_front/push_back/pop_front/pop_back`),迭代器遍历及任意位置插入删除。`map`是键值对集合,自动按键排序,支持直接通过键来添加、修改和删除元素。两者均能使用范围for循环遍历,`map`的`count`函数用于统计键值出现次数。 ```
|
9月前
|
C++一分钟之-变量与数据类型入门
【6月更文挑战第18天】**C++编程基础:变量与数据类型概览** 了解变量(存储数据的容器)和数据类型是编程入门的关键。声明变量如`int age = 25;`,注意初始化和类型匹配。基本数据类型包括整型(int等)、浮点型(float、double)、字符型(char)和布尔型(bool)。理解类型范围和精度,使用字面量后缀增强可读性。深入学习数组、指针、结构体和类,以及动态内存管理,避免数组越界和内存泄漏。不断实践以巩固理论知识。
63 1
C++ 中的类是一种用户定义的数据类型,用于表示具有相似特征和行为的对象的模板。
C++ 中的类是一种用户定义的数据类型,用于表示具有相似特征和行为的对象的模板。
|
9月前
|
C++的list-map链表与映射表
这篇教程介绍了C++中`list`链表和`map`映射表的基本使用。`list`链表可通过`push_front()`、`push_back()`、`pop_front()`和`pop_back()`进行元素的添加和删除,使用迭代器遍历并支持在任意位置插入或删除元素。`map`是一个键值对的集合,元素自动按键值排序,可使用下标操作符或`insert()`函数插入元素,通过迭代器遍历并修改键值对,同时提供`count()`方法统计键值出现次数。教程中包含多个示例代码以帮助理解和学习。
102 2
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等