当前位置: 首页 > news >正文

02-2.3.6 顺序表和链表的比较

喜欢《数据结构》部分笔记的小伙伴可以订阅专栏,今后还会不断更新。🧑‍💻
此外,《程序员必备技能》专栏和《程序员必备工具》专栏(该专栏暂未开设)日后会逐步更新,感兴趣的小伙伴可以点一下订阅、收藏、关注!🚀
谢谢大家!🙏

逻辑结构

不管是顺序表还是链表,都属于线性表,都是线性结构

物理结构/存储结构

顺序表采用了顺序存储的方式

  • 优点:支持随机存取、存储密度高
  • 缺点:大片连续空间分配不方便、改变容量不方便
    链表采用链式存储的方式
  • 优点:离散的小空间分配方便、改变容量方便
  • 缺点:不可随机存取、存储密度低(需要指针)

数据的运算/基本操作

复习回忆思路:创销、增删改查

顺序表:

  • 需要预分配大片连续空间
  • 若分配空间过小,之后不方便扩展容量
  • 若分配空间过大,则浪费内存资源
    链表:
  • 只需要分配一个头结点(也可以不要头结点,只声明一个头指针),之后方便扩展
    如果我们的线性表采用
  • 静态分配:静态数组。那么容量不可改变
  • 动态分配:动态数组。即便使用malloc, free函数改变容量,但是需要移动大量元素,时间代价很高

链表:

  • free依次删除各个结点——手动回收空间
    顺序表:
  • 修改length = 0——系统自动回收空间

malloc申请的地址,是内存中的堆区,堆区不会由系统自动回收
所以在写代码的时候mallocfree必须成对出现

增、删

顺序表:

  • 插入/删除元素要将后续的元素都后移/前移
  • 时间复杂度: O ( n ) O(n) O(n),时间开销主要来自移动元素
  • 如果数据元素很大,则移动的时间代价很高
    链表:
  • 插入/删除元素只需要修改指针即可
  • 时间复杂度: O ( n ) O(n) O(n),时间开销主要来自查找目标元素
  • 查找元素的时间代价更低

顺序表:

  • 按位查找: O ( 1 ) O(1) O(1)
  • 按值查找: O ( n ) O(n) O(n),若表内元素有序,可在 O ( l o g 2 n ) O(log_2 n) O(log2n)时间内找到(如二分查找*)
    链表:
  • 按位查找: O ( n ) O(n) O(n)
  • 按值查找: O ( n ) O(n) O(n)

如何抉择?

表长难以估计、经常要增加/删除元素————链表
表长可预估、查询(搜索)操作较多————顺序表

知识回顾

开放式问题的回答思路:

  • 可以先探讨逻辑结构
  • 再讨论存储结构
  • 然后再探讨一些比较重要的基本操作的实现效率
  • 最后得出结论

相关文章:

02-2.3.6 顺序表和链表的比较

喜欢《数据结构》部分笔记的小伙伴可以订阅专栏,今后还会不断更新。🧑‍💻 此外,《程序员必备技能》专栏和《程序员必备工具》专栏(该专栏暂未开设)日后会逐步更新,感兴趣的小伙伴可以点一下订阅…...

C++ : 模板初阶

标题:C : 模板初阶 水墨不写bug 正文开始: C语言的问题 : 写不完的swap函数 在学习C语言时,我们有一个经常使用的函数swap函数,它可以将两个对象的值交换。 我们通常这样实现它: void swap(int t1,int t2)…...

FFA-Net:用于单图像去雾的特征融合注意力网络

摘要 论文链接:https://arxiv.org/pdf/1911.07559v2 在这篇论文中,我们提出了一种端到端的特征融合注意力网络(FFA-Net)来直接恢复无雾图像。FFA-Net架构由三个关键组件组成: 一种新颖的特征注意力(FA&…...

网工内推 | 联通公司,云计算售前,AWS认证优先

01 联通数字科技有限公司 🔷招聘岗位:云计算售前工程师 🔷职责描述: 1.了解私有云,公有云,混合云等云计算技术知识,了解云计算行业现状及发展趋势。 2.承担区域项目售前工作支持,为…...

[Redis]Zset类型

Zset有序集合相对于字符串、列表、哈希、集合来说会有一些陌生。 它保留了集合不能有重复成员的特点,但与集合不同的是,有序集合中的每个元素都有一个唯一的浮点类型的分数(score)与之关联,着使得有序集合中的元素是可…...

【云原生】Kubernetes----Ingress对外服务

目录 引言 一、K8S对外方式 (一)NodePort 1.作用 2.弊端 3.示例 (二)externalIPs 1.作用 2.弊端 3.示例 (三)LoadBalancer 1.作用 2.弊端 (四)Ingress 二、Ingress的…...

项目管理之maven svn

管理jar包之间依赖关系 编译、打包、清理、测试等一系列构建工具 一、Maven的标志 1、每一个maven工程都有一个pom.xml maven项目坐标 <groupId>com.aaa</groupId>//项目路径 <artifactId>web</artifactId>项目名称 <version>0.0.1-SNAPS…...

Redis篇 list类型在Redis中的命令操作

list在redis基本的命令 一.基本命令1.lpush和range2.lpushx rpushx3.lpop rpop4.lindex linsert llen5.lrem6.ltrim lset7.blpop brpop 一.基本命令 list在redis中相当于数组或者顺序表. 1.lpush和range 2.lpushx rpushx 3.lpop rpop 4.lindex linsert llen 如果要插入的列表中…...

【C++课程学习】:类和对象(上)(类的基础详细讲解)

&#x1f381;个人主页&#xff1a;我们的五年 &#x1f50d;系列专栏&#xff1a;C课程学习 &#x1f389;欢迎大家点赞&#x1f44d;评论&#x1f4dd;收藏⭐文章 目录 &#x1f35f;1.1类的引出&#xff1a; &#x1f35f;1.2类的结构&#xff1a; &#x1f35f;1.3类的…...

HTML 转义字符(escape characters)及其对应的符号(symbols)

以下是常见的 HTML 转义字符及其对应的符号&#xff0c;这些可以用于在 HTML 或 JSX 中避免解析错误和特殊字符的冲突&#xff1a; 空格 ( ): 或 引号: 单引号&#xff08;&#xff09;&#xff1a;&apos;、&lsquo;、、&rsquo;双引号&#xff08;"&#x…...

CPASSOC代码详解

加载环境 library("MASS") require(MASS) # Modern Applied Statistics with S&#xff0c;"S"指的是S语言&#xff0c;由贝尔实验室的约翰钱伯斯&#xff08;John Chambers&#xff09;等人开发。S语言是R语言的前身&#xff0c;许多R语言的语法和功能都…...

dirfuzz-web敏感目录文件扫描工具

dirfuzz介绍 dirfuzz是一款基于Python3的敏感目录文件扫描工具&#xff0c;借鉴了dirsearch的思路&#xff0c;扬长避短。在根据自身实战经验的基础上而编写的一款工具&#xff0c;经过断断续续几个月的测试、修改和完善。 项目地址&#xff1a;https://github.com/ssrc-c/di…...

计算机发展史 | 从起源到现代技术的演进

computer | Evolution from origins to modern technology 今天没有参考资料哈哈 PPT&#xff1a;&#xff08;评论区&#xff1f;&#xff09; 早期计算工具 算盘 -算盘是一种手动操作的计算辅助工具&#xff0c;起源于中国&#xff0c;迄今已有2600多年的历史&#xff0c;是…...

45-3 护网溯源 - 为什么要做溯源工作

官网:CVERC-国家计算机病毒应急处理中心 西工大遭网络攻击再曝细节!13名攻击者身份查明→ (baidu.com) 护网溯源是指通过技术手段追踪网络攻击的来源和行为,其重要性体现在以下几个方面: 安全防御:了解攻击源头可以帮助组织加强网络安全防御,及时采取措施防止攻击的再次…...

【JavaEE 进阶(二)】Spring MVC(下)

❣博主主页: 33的博客❣ ▶️文章专栏分类:JavaEE◀️ &#x1f69a;我的代码仓库: 33的代码仓库&#x1f69a; &#x1faf5;&#x1faf5;&#x1faf5;关注我带你了解更多进阶知识 目录 1.前言2.响应2.1返回静态界面2.2返回数据2.3返回HTML代码 3.综合练习3.1计算器3.2用户登…...

光波长 深入程度

UV深入程度&#xff08;UVC&#xff0c; UVB&#xff0c; UVA&#xff09;https://mp.weixin.qq.com/s?__bizMzkwNTM0Njk3MA&mid2247483934&idx1&sn92d1ba67ead404e7714af11ec0526786&chksmc0f868ebf78fe1fd0610493e6f49a5d90835a20a829a900746906cda12f2fa12…...

MySQL数据库常见工具的基础使用_1

在上一篇文章中提到了对MySQL数据库进行操作的一些常见工具 mysqlcheck mysqlcheck是一个用于数据库表的检查&#xff0c;修复&#xff0c;分析和优化的一个客户端程序 分析的作用是查看表的关键字分布,能够让sql生成正确的执行计划(支持InnoDB,MyISAM,NDB)检查的作用是检查…...

C语言中指针的说明

什么是指针&#xff1f; 在C语言当中&#xff0c;我们可以将指针理解为内存当中存储的地址&#xff0c;就像生活当中&#xff0c;一个小区里面&#xff0c;在小区里面有很单元&#xff0c;每一栋单元&#xff0c;单元内的房间有着不同的房间号&#xff0c;我们可以同过几栋几单…...

webrtc vp8/9视频编解码介绍

文章目录 一、libvpx项目介绍libvpx基本概念编码器使用流程解码器使用流程示例代码:官方文档和资源二、VP8/9在WebRTC中的应用2.1 VP82.2 VP92.3如何选择哪种编码方式2.4 vp9编码的主要步骤2.5 vp9解码C++代码示例注意事项三、webrtc在音视频传输中是怎样选择vp8还是vp9<...

【机器学习300问】107、自然语言处理(NLP)领域有哪些子任务?

自然语言处理&#xff08;NLP&#xff09;是计算机科学、人工智能和语言学领域的一个交叉学科&#xff0c;致力于让计算机能够理解、解析、生成和与人类的自然语言进行互动。自然语言指的是人们日常交流使用的语言&#xff0c;如英语、汉语等&#xff0c;与计算机编程语言相对。…...

让AI成为你的数据库设计师:使用快马平台智能规划与优化数据模型

让AI成为你的数据库设计师&#xff1a;使用快马平台智能规划与优化数据模型 最近在开发一个在线教育平台时&#xff0c;我深刻体会到数据库设计的重要性。合理的表结构和关系设计不仅能提高查询效率&#xff0c;还能减少后期维护的复杂度。幸运的是&#xff0c;我发现InsCode(…...

QuickBMS游戏资源提取指南:从逆向工程到模组制作的全能工具

QuickBMS游戏资源提取指南&#xff1a;从逆向工程到模组制作的全能工具 【免费下载链接】QuickBMS QuickBMS by aluigi - Github Mirror 项目地址: https://gitcode.com/gh_mirrors/qui/QuickBMS QuickBMS是一款功能强大的跨平台游戏资源提取工具&#xff0c;通过简单的…...

实战起步:基于快马ai生成集成openclaw的windows自动化监控项目脚手架

实战起步&#xff1a;基于快马AI生成集成OpenClaw的Windows自动化监控项目脚手架 最近在做一个网络资源监控的小项目&#xff0c;需要在Windows环境下使用OpenClaw工具。作为一个经常被环境配置折磨的开发者&#xff0c;这次尝试用InsCode(快马)平台来生成完整的项目脚手架&am…...

3步搞定Windows卡顿:Win11Debloat系统优化工具使用全攻略

3步搞定Windows卡顿&#xff1a;Win11Debloat系统优化工具使用全攻略 【免费下载链接】Win11Debloat A simple, lightweight PowerShell script that allows you to remove pre-installed apps, disable telemetry, as well as perform various other changes to declutter and…...

小米笔记本Hackintosh无线网卡终极解决方案:Intel Wi-Fi驱动 vs 更换模块

小米笔记本Hackintosh无线网卡终极解决方案&#xff1a;Intel Wi-Fi驱动 vs 更换模块 【免费下载链接】XiaoMi-Pro-Hackintosh XiaoMi NoteBook Pro Hackintosh 项目地址: https://gitcode.com/gh_mirrors/xia/XiaoMi-Pro-Hackintosh 想要在小米笔记本上完美运行macOS系…...

iperf3 Windows预编译二进制深度解析:专业网络性能测试技术实践

iperf3 Windows预编译二进制深度解析&#xff1a;专业网络性能测试技术实践 【免费下载链接】iperf3-win-builds iperf3 binaries for Windows. Benchmark your network limits. 项目地址: https://gitcode.com/gh_mirrors/ip/iperf3-win-builds iperf3-win-builds是针对…...

3步完成:星图平台OpenClaw镜像体验Qwen3.5-9B基础功能

3步完成&#xff1a;星图平台OpenClaw镜像体验Qwen3.5-9B基础功能 1. 为什么选择星图平台体验OpenClaw 作为一个长期关注AI自动化工具的技术爱好者&#xff0c;我一直在寻找能够快速验证OpenClaw功能的方法。传统本地部署需要配置Python环境、解决依赖冲突、调试网络权限&…...

ILI9342_T4驱动库:Teensy 4.x高性能LCD显示后端

1. 项目概述 ILI9342_T4 是一款专为 Teensy 4、Teensy 4.1 及 Teensy MicroMod 平台深度优化的 ILI9342/ILI9342C 显示控制器驱动库。该库并非从零构建&#xff0c;而是基于成熟的 ILI9341_T4 驱动框架进行针对性重构&#xff0c;继承了其全部高性能特性&#xff0c;并针对 ILI…...

Kubernetes StatefulSet 完全指南,SOFA 架构--01--简介。

StatefulSet 的核心概念 StatefulSet 是 Kubernetes 中用于管理有状态应用的控制器&#xff0c;确保 Pod 具有稳定的网络标识和持久化存储。每个 Pod 拥有唯一的名称和持久化卷声明&#xff08;PVC&#xff09;&#xff0c;即使重启或重新调度也不会改变。 稳定网络标识的作用 …...

Kandinsky-5.0-I2V-Lite-5s惊艳案例分享:宠物/人像/产品图5秒动态化成果集

Kandinsky-5.0-I2V-Lite-5s惊艳案例分享&#xff1a;宠物/人像/产品图5秒动态化成果集 1. 开篇&#xff1a;让静态图片动起来的魔法 你有没有想过&#xff0c;随手拍的照片能自己动起来&#xff1f;Kandinsky-5.0-I2V-Lite-5s就是这样一个神奇的AI工具。它能把你的宠物照片、…...