【数据结构】顺序表与链表的区别和各自特点

news2024/11/27 3:37:59

顺序表与链表的区别

  • 一、结构上
  • 二、使用上
    • 随机访问
    • 在随机位置插入删除
    • 空间利用率
    • 缓存利用率
  • 应用场景

一、结构上

顺序表:
顺序表的内核是一个数组,所以顺序表在逻辑上,和在物理上都是线性的。
链表:
链表是通过一个个独立的空间链接在一起,所以链表在逻辑上是线性的,而物理上不是线性的。

二、使用上

随机访问

当我们要随机访问元素时,顺序表和链表的侧重点是不同的。
顺序表:
可以直接通过下标访问,所以时间复杂度是O(1)
链表:
没有下标,所以只能通过遍历链表来找,所以时间复杂度是O(N)

在随机位置插入删除

顺序表:
因为顺序表是一个连续的空间,所以如果要插入或者删除,我们需要对其他元素进行移动,时间复杂度是O(N)
链表:
链表的插入删除很简单,只用改变指针的指向就行了,时间复杂度是O(N)

空间利用率

顺序表:
因为内核是数组,所以当空间不够时要开辟空间,一般每次开辟两倍,很容易会出现空间上的浪费,而且当需要开辟空间特别多时很容易开辟失败。
链表:
链表每个节点都可以存在不同的位置,随用随开,空间利用率高。

缓存利用率

首先要明白缓存是如果读取数据的
我们电脑中数据的读取是分内存和缓存的,缓存的传输速度是比内存快的当我们在程序中调用某一数据时,会先从缓存中找,若在缓存中找到了就会很快,不用再从内存中找,这个叫做缓存命中
在这里插入图片描述
而缓存从内存中查找数据时,通常会将与要取出的数据后的一串数都取出,例如数组缓存一次查找就会将数组中的所有数据都取出,而在取链表中的数据时,每一次调用其中一个节点时就会将节点后面的一串数据取到缓存,这样缓存中会就会有一些无用的数,造成缓存污染

顺序表:
缓存利用率高
链表:
缓存利用率低

应用场景

顺序表:
需要快速存储大量数据时,用顺序表,因为顺序表一次开辟就可以用好久,而且可以一次开辟很大空间。
当需要频繁访问时数组的下标可以给我们提供便利。
链表:
当需要在任意位置插入删除时,链表只用改变指针。

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

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

相关文章

Linux性能调优之使用BPF工具观测CPU性能指标

写在前面 博文内容涉及工具来自《BPF Performance Tools》 一书,CPU性能指标涉及: 系统短期创建的线程进程跟踪进程线程的CPU运行时长,脱离时长统计线程的运行队列长度,等待延时时间,有多少线程在等待,多核…

python语言入门必须要学习的模块化编程案例游戏---画图案例(三)【源码大全】

彩虹五角星 import turtle #引用turtle库 q turtle.Pen() #构造画笔 turtle.bgcolor("black") …

java基于SpringBoot+Vue+uniapp微信小程序的自助点餐系统的详细设计和实现(源码+lw+部署文档+讲解等)

项目运行截图 技术框架 后端采用SpringBoot框架 Spring Boot 是一个用于快速开发基于 Spring 框架的应用程序的开源框架。它采用约定大于配置的理念,提供了一套默认的配置,让开发者可以更专注于业务逻辑而不是配置文件。Spring Boot 通过自动化配置和约…

(悬臂)梁结构固有频率理论求解

文章目录 0、背景1、梁固有频率的理论解法1.1 简支梁和悬臂梁1.2 其他支撑形式的梁2、支座带旋转弹簧的悬臂梁固有频率求解3、算例及仿真0、背景 为了给风电塔筒结果的ABAQUS模型中添加支座弹簧,需要先搞清楚ABAQUS中弹簧单元的性质。很遗憾,网络上关于土弹簧的资料很少,帮…

【Linux】从 fork() 到 exec():理解 Linux 进程程序替换的魔法

1.前言 进程程序替换是指一个进程用另一个新的可执行程序来替换当前正在执行的程序,这个过程通过通过exec系列函数完成。在Linux或UNIX系统中,进程程序替换通常发生在一个进程通过fork()创建了子进程之后,子进程用exec()函数加载和执行另一个…

HTTP(HyperText Transfer Protocol)协议

前言 HTTP作为应用层协议,定义了客户端与服务器之间的通信规则,使得浏览器或其他客户端程序能够请求并获取Web服务器上的超文本信息。 在分布式、协作式的超媒体信息系统中,HTTP协议扮演着核心角色,它支持了信息的组织、检索和呈现…

ChatGPT01-preivew体验报告:内置思维链和多个llm组合出的COT有啥区别呢?丹田与练气+中学生物理奥赛题测试,名不虚传还是名副其实?

一个月前,o1发布的时候,我写了篇文章介绍 逻辑推理能力堪比博士生,OpenAI发布全新AI模型系列: o1 - 大模型或许进入新阶段,还翻译了官方的介绍 解密OpenAI o1是如何让LLMs获得逻辑推理能力的 - CoT * RL,也…

Ribbon客户端负载均衡策略测试及其改进

文章目录 一、目的概述二、验证步骤1、源码下载2、导入IDE3、运行前修改配置4、策略说明5、修改策略 三、最终结论四、改进措施1. 思路分析2. 核心代码3. 测试页面 一、目的概述 为了验证Ribbon客户端负载均衡策略在负载节点失效的情况下,是否具有故障转移的功能&a…

学习 UE5 的一些前置操作总结

随着 Unity, Godot 这些引擎都玩抽象,主动捅自己一刀后,UE5 的风头不可谓不盛,本着多学一点免得失业的思路方针,咱也研究了一下 UE5 引擎,然后发现想要开始使用 UE5 ,包含了很多前置操作,这里总…

Java项目-基于springboot框架的家具商城系统项目实战(附源码+文档)

作者:计算机学长阿伟 开发技术:SpringBoot、SSM、Vue、MySQL、ElementUI等,“文末源码”。 开发运行环境 开发语言:Java数据库:MySQL技术:SpringBoot、Vue、Mybaits Plus、ELementUI工具:IDEA/…

使用Yolov10和Ollama增强OCR

1. 训练自定义 Yolov10 数据集 利用物体检测增强 OCR 的第一步是在数据集上训练自定义 YOLO 模型。YOLO(只看一遍)是一种功能强大的实时对象检测模型,它将图像划分为网格,使其能够在一次前向传递中识别多个对象。这种方法非常适合…

AI大模型开发架构设计(14)——基于LangChain大模型的案例架构实战

文章目录 基于LangChain大模型的案例架构实战1 LangChain 顶层架构设计以及关键技术剖析LangChain 是什么?LangChain的主要功能是什么?LangChain 顶层架构设计LangChain 典型使用场景:QA 问答系统LangChain 顶层架构设计之 Model I/OLangChain 顶层架构…

No.17 笔记 | XXE漏洞:XML外部实体注入攻击

1. XXE漏洞概览 XXE(XML External Entity)是一种允许攻击者干扰应用程序对XML输入处理的漏洞。 1.1 XXE漏洞比喻 想象XML解析器是一个听话的机器人,而XXE就是利用这个机器人的"过分听话"来获取不应该获取的信息。 1.2 XXE漏洞危…

基于SSM汽车零部件加工系统的设计

管理员账户功能包括:系统首页,个人中心,员工管理,经理管理,零件材料管理,产品类型管理,产品信息管理,产品出库管理,产品入库管理 员工账号功能包括:系统首页…

spring-cloud-alibaba-nacos-config2023.0.1.*启动打印配置文件内容

**背景:**在开发测试过程中如果可以打印出配置文件的内容,方便确认配置是否准确;那么如何才可以打印出来呢; spring-cloud-alibaba-nacos-config 调整日志级别 logging:level:com.alibaba.cloud.nacos.configdata.NacosConfigD…

Java爬虫:获取商品销量详情API返回值的实战指南

在数字化时代,数据已成为电商运营的核心。商品销量数据不仅反映了市场的需求和趋势,还能为商家提供决策支持。通过Java爬虫技术,我们可以高效地获取这些数据,从而深入分析商品的市场表现。 为何选择Java爬虫获取销量数据 自动化处…

股票与基金资料收集

声明:本内容是网上资料的收集与整理而成,不定时更新。仅供参考,不构成任何投资建议。 目录: 一、股票 1、黄金交叉和死亡交叉 2、技术指标 3、T、TR、THR含义 二、基金 平准基金 一、股票 1、黄金交叉和死亡交叉 “黄金交…

【C++_string类练习】仅仅反转字母

题目链接:仅仅反转字母 解题思路: 这种反转字符的题目我第一个想到的方法就是:双指针 一个指针在前start,一个指针在后back, 如果指针所指向的位置的值是字母,那么两个指针位置的值就进行交换&#xff0…

P2-3与P2-4.【C语言基本数据类型、运算符和表达式】第三节与第四节

讲解视频: P2-3.【基本数据类型、运算符和表达式】第三节 P2-4.【基本数据类型、运算符和表达式】第四节 目录 必备知识与理论 任务实施 必备知识与理论 C语言中把除了控制语句和输入输出以外的几乎所有的基本操作都作为运算符处理。 其运算符和表达式数量之多&a…

以简单组合优化为例讨论计算复杂性

此为课题组所指导本科生和低年级硕士生学习组合优化问题汇报 所用教材:北京大学屈婉玲教授《算法设计与分析》 课程资料:https://www.icourse163.org/course/PKU-1002525003 承诺不用于任何商业用途,仅用于学术交流和分享 更多内容请关注课题…