单链表专题(上)(顺序表链表线性表)

news2024/11/20 12:28:51
在开始之前思考一个顺序表的问题
1. 中间/头部的插⼊删除,时间
复杂度为O(N)
2. 增容需要申请新空间,拷⻉数据,释放旧空间。会有不⼩的消耗。
3. 增容⼀般是呈2倍的增⻓,势必会有⼀定的空间浪费。例如当前容量为100,满了以后增容到
200,我们再继续插⼊了5个数据,后⾯没有数据插⼊了,那么就浪费了95个数据空间。
思考:如何解决以上问题呢?
答案是肯定的,  那就是 链表

1.链表顺序表线性表

链表和顺序表都是线性表 

线性表:

1.在逻辑结构上一定是线性的

2.在物理结构上不一定是线性的

链表在物理结构上就不是线性的。

如上图所示: 

顺序表分布是连续的一整块的,但是链表在内存的上的分布是杂乱无章的

那么这里就会有一个疑问,既然链表分布是杂乱无章的,那么数据到底是怎么找到的呢

链表就和下面的火车挺像的

火车是一节一节车厢连着的 ,火车连接的地方都有一个钩子把俩节车厢钩在一起,

同理

链表的数据也是

  说到底链表就是一个结构体,然后他分为两个部分

1.上面的数字中保存的数据

2.下一个结构体的地址

是的链表就是由一个个节点(结点)组成的

举例:

上图就是由四个节点组成的

顺序表底层是通过数组来实现的,数组的内存分布就是连续的,所以顺序表在逻辑上和物理上都是线性的

链表里面存着下一个数据的指针,他并不是一个数组,他分配的内存自然也不是连续的

顺序表扩容如果满了一般是按照1.5倍扩容,或2倍,但插入的数据一般都会小于阔如的数量,所以就会有空间存在浪费、

链表扩容,他是采用地址,那么他只需要存下那个的地址,自然也就不会存在浪费

那么我们结构体就可以定义成这样

struct SListNode
{
	int data;
	struct SListNode* next;
};

Node也就是节点的意思

链表就是List ,SLlist就是单链表  

ps:链表里面还分为很多种

2.代码实现

老样子先添加三个文件

2.1 链表的打印

SList.h头文件的内容

在text文件里面导入头文件创建四个变量 

单链表顾名思义单向的,只往一个方向走

所以我们可以在每一个的数据加上下一个数据的地址 

 

 

但是正常的链表插入不会用这种方式这种方式只是用来展示

链表的尾插

 

尾插就需要改变3原来指向的NULL改成指向四然后四指向NULL

接着找到尾节点然后才可以加上数据

 还需要写其他的插入(头插任意位置的插入)这些都需要申请空间这里直接把申请空间写成一个函数

2.2节点申请

2.3尾插

 2.4头插

 2.5尾删

 效果差不多就是这样

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1547414.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

HTML(二)---【常见的标签使用】

零.前言 本文只介绍常见的标签使用&#xff0c;其中使用的一些HTML专业术语可以在作者的第一篇文章&#xff1a; HTML&#xff08;一&#xff09;---【基础】-CSDN博客中找到。 一.<b>粗体、<i>或<em>斜体 1.定义 粗体、斜体的实现可以在CSS中实现&…

DaisyDisk for mac 苹果电脑磁盘清理工具

DaisyDisk for Mac是一款直观易用的磁盘空间分析工具&#xff0c;专为Mac用户设计&#xff0c;旨在帮助他们快速识别和管理磁盘上的文件与文件夹&#xff0c;从而释放存储空间。 软件下载&#xff1a;DaisyDisk for mac 激活版 DaisyDisk采用独特的可视化界面&#xff0c;将磁盘…

基于uniapp微信小程序我的钱包页面

基于uniapp color ui 页面效果图&#xff1a; 代码部分&#xff1a; https://download.csdn.net/download/kay523393/89035927

微信商家转账到零钱:实用指南,涵盖开通、使用与常见问题

商家转账到零钱是什么&#xff1f; 商家转账到零钱功能整合了企业付款到零钱和批量转账到零钱&#xff0c;支持批量对外转账&#xff0c;操作便捷。如果你的应用场景是单付款&#xff0c;体验感和企业付款到零钱基本没差别。 商家转账到零钱的使用场景有哪些&#xff1f; 这…

CMake学习笔记(一)一个最简单的CMakeLists嵌套示例

目录 1 mkdir project_macro 2 在project_marco中建立CMakeLists.txt 3 建立专门的src文件夹 4 在src中添加main.cpp和CMakeLists.txt 5 回到project_macro目录&#xff0c;建立build文件夹 6 进入build 文件夹&#xff0c;开始cmake 7 在build文件夹里执行make指令 8 …

Python7:接口自动化学习1 RPC

API&#xff08;Application Programmming Interface&#xff09; 应用编程接口&#xff0c;简称“接口” 接口&#xff1a;程序之间约定的通信方法 特点&#xff1a;约定了调用方法&#xff0c;以及预期的行为&#xff0c;但是不透露具体细节 意义&#xff1a;程序能解耦&…

自动化脚本-Excel批量生成二维码

演示&#xff1a; Excel二维码批量生成 exe资源文件&#xff1a; 下载exe 代码实现&#xff1a; pip install openpyxl openpyxl 是一个用于读写 Excel 文件的 Python 库 pip install qrcode qrcode 是一个 Python 库&#xff0c;可以用来生成二维码&#xff08;Quick Resp…

【Mybatis 基础】增删改查(@Insert, @Delete, @Update, @Select)

Mybatis Insert Delete Update Select Mybatis用法基础操作 - 删除delete 传参SpringbootMybatisCrudApplicationTests 测试类删除预编译SQL 基础操作 - 插入Insert 插入SpringbootMybatisCrudApplicationTests 测试类插入对象主键返回 基础操作 - 更新UPDATE 更新SpringbootMy…

汽车电子行业知识:智能汽车电子架构

文章目录 3.智能汽车电子架构3.1.汽车电子概念及发展3.2.汽车电子架构类型3.2.1.博世汽车电子架构3.2.2.联合电子未来汽车电子架构3.2.3.安波福汽车电子架构3.2.4.丰田汽车电子架构3.2.5.华为汽车电子架构 3.智能汽车电子架构 3.1.汽车电子概念及发展 汽车电子是车体汽车电子…

8.windows ubuntu 子系统:karken2,bracken微生物物种注释

上次&#xff0c;我们对测序数据去了人源序列。接下来我们就要对去人源的reads进行微生物物种注释。 我们选择karken2和bracken。 首先是建立karken2的数据库&#xff0c;有多种方法。 方法一&#xff1a;kraken2-build --standard --threads 4 --db ./standardDB #时间太…

阿里云国际DDoS高防的定制场景策略

DDoS高防的定制场景策略允许您在特定的业务突增时段&#xff08;例如新业务上线、双11大促销等&#xff09;选择应用独立于通用防护策略的定制防护策略模板&#xff0c;保证适应业务需求的防护效果。您可以根据需要设置定制场景策略。 背景信息 定制场景策略提供基于业务场景…

白话模电:4.耦合、差分、无源滤波、反馈(考研面试常问问题)

一、介绍一下三极管多级放大电路的三种耦合方式及其特点&#xff1f;耦合的目的是什么&#xff1f; 多级放大电路中各放大级之间的连接方式称为耦合方式。常见的耦合方式有三种&#xff1a;阻容耦合&#xff08;RC耦合&#xff09;、直接耦合和变压器耦合。 耦合的目的是将信号…

GIMP - GNU 图像处理程序 - 工具栏窗口 (Toolbox) 显示

GIMP - GNU 图像处理程序 - 工具栏窗口 [Toolbox] 显示 1. File -> Open2. GIMP 主面板里&#xff0c;右击弹出菜单 -> Tools -> New Toolbox3. Windows -> Dockable Dialogs -> Tool Options4. 工具选项拖动到工具箱里面5. Always On TopReferences GIMP 是跨平…

【面试题】ES文档写入和读取流程详解

前言&#xff1a;在回答这个问题之前我们先要搞清楚一个问题那就是什么是文档&#xff0c;避免不知所云&#xff01; 一、什么是文档&#xff1f; 在Elasticsearch中&#xff0c;文档&#xff08;Document&#xff09;是最基本的信息单元&#xff0c;用于表示和存储数据。文…

[CSS]中块级格式化上下文(BFC)

块级格式化上下文 &#xff08;BFC&#xff09; 1. 什么是BFC BFC&#xff08;Block Formatting Context&#xff09;是一个独立的渲染区域&#xff0c;在这个区域内的布局不会影响到这个区域之外的元素。换句话说&#xff0c;它就像一个隔离的空间&#xff0c;里面的元素布局…

Django(二)-搭建第一个应用(1)

一、项目环境和结构 1、项目环境 2、项目结构 二、编写项目 1、创建模型 代码示例: import datetimefrom django.db import models from django.utils import timezone# Create your models here.class Question(models.Model):question_text models.CharField(max_length2…

Jmeter脚本优化——随机函数

线程组下有 2 个请求的参数中均使用到相同的参数&#xff0c;在进行参数化时&#xff0c;想 要每个请求使用不同的取值。 &#xff08; 1 &#xff09; 线程组设置如下 &#xff08; 2 &#xff09; 线程组下添加加购物车请求&#xff0c;请求传参包含商品 id &#xff08;…

app自动化-Appium学习笔记

使用Appium&#xff0c;优点&#xff1a; 1、支持语言比较多&#xff0c;例如&#xff1a;Java、Python、Javascript、PHP、C#等语言 2、支持跨应用&#xff08;windows、mac、linux&#xff09; 3、适用平台Android、iOS 4、支持Native App(原生app)、Web App、Hybird App…

Go语言学习Day2:注释与变量

名人说&#xff1a;莫道桑榆晚&#xff0c;为霞尚满天。——刘禹锡&#xff08;刘梦得&#xff0c;诗豪&#xff09; 创作者&#xff1a;Code_流苏(CSDN)&#xff08;一个喜欢古诗词和编程的Coder&#x1f60a;&#xff09; 目录 1、注释①为什么要写注释&#xff1f;②单行注释…

Android卡顿掉帧问题分析之工具篇

“工欲善其事&#xff0c;必先利其器”&#xff0c;在开始着手分析卡顿问题之前&#xff0c;我们还必须要掌握一些分析性能问题的工具与手段&#xff0c;也就是掌握分析问题所使用的“器”&#xff0c;才能帮助我们更好的观测系统运行的状态&#xff0c;找到性能问题的原因。Sy…