数据结构(二)——顺序表和链表的比较

1、存取(读/写)方式
     
顺序表可以顺序存取,也可以随机存取,在第i个位置上执行存取操作,顺序表仅需一次访问.
      链表只能从表头开始依次顺序存取,链表在第i个位置执行存取则需从表头开始依次访问i次.

2、逻辑结构与物理结构
      顺序表和链表都属于线性表,都是线性结构。
      顺序存储逻辑上相邻的元素,对应的物理存储位置也相邻,链式存储逻辑上相邻的元素物理存储位置不一定相邻,对应的逻辑关系是通过指针链接来表示的。

3、创销、增删改查

基本操作—创建

  • 顺序表:需要预分配大片连续空间。 若分配空间过小,则之后不 方便拓展容量;若分配空间 过大,则浪费内存资源。
    静态分配:静态数组,容量不可改变。
    动态分配:动态数组(malloc、free),容量可以改变,但是需要移动大量元素,时间代价高。
  • 链表:只需分配一个头结点(也可 以不要头结点,只声明一个 头指针),之后方便拓展

基本操作 - 销毁

  •   顺序表:修改 Length = 0
  • 链表:依次删除各个结点 (free)。

基本操作 - 增/删

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

基本操作 - 查找

  • 顺序表
    按位查找:时间复杂度O(1)
    按值查找:时间复杂度O(n),若表内元素有序,可在 O(log2n) 时间内找到(二分法)
  • 链表
    按位查找:时间复杂度O(n)
    按值查找:时间复杂度O(n)


开放性问题答题思路

Q:请描述顺序表和链表的 bla bla bla… 实现线性表时,用顺序表还是链表好?

A:顺序表和链表的逻辑结构都是线性结构,都属于线性表。 但是二者的存储结构不同,顺序表采用顺序存储…(特点,带来的优点缺点);链表采用链式存储…(特 点、导致的优缺点)。 由于采用不同的存储方式实现,因此基本操作的实现效率也不同。当初始化时…;当插入一个数据元 素时…;当删除一个数据元素时…;当查找一个数据元素时...

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

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

相关文章

vue2和vue3的区别?

1. 性能优化: Vue 3在底层进行了重写,重写了虚拟DOM的实现,优化Tree- Shaking,使用了更高效的响应式系统,提供了更快的渲染速度和更小的包体积。Vue 3虚拟 DOM 的优化,提高了渲染性能。 2. Composition A…

短视的双曲贴现

双曲线贴现模型以其函数形式为双曲线而得名,基本特征是贴现率不再是一个常数,而变成与时间相关的变量随时间递减。 贴现率:现在的价值除以未来的价值的比率。 学习应该包括三个层次: 一、知识的输入 二、知识的理解 三、知识的运用…

unity显示当前时间

1建立文本组件和一个空对象 2创建一个脚本并复制下面代码 using System.Collections; using System.Collections.Generic; using TMPro; using UnityEngine;public class showtime: MonoBehaviour {public TextMeshProUGUI time;private void Update(){string currentTime Sy…

sqllab第十五关通关笔记

知识点: 布尔盲注 无任何有价值的回显;但是回显信息只有两种(区别正确和错误)通过布尔盲注爆破处正确的信息利用过滤条件对数据进行过滤;只显示自己想要的信息 尝试进行admin admin登录发现没有任何的回显信息 通过b…

TCP网络通信-在C#/Unity中的知识点

导语 TCP编程,作为网络编程的重要一环,常常通过Socket API来实现。了解TCP的API,尤其是在Unity中的应用,是构建可靠网络通信的基础。本文将探讨TCP的相关API,重点聚焦于Unity环境下的System.Net.Sockets命名空间。 正…

Baumer工业相机堡盟工业相机如何通过NEOAPISDK实现双快门采集两张曝光时间非常短的图像(C++)

Baumer工业相机堡盟工业相机如何通过NEOAPISDK实现双快门采集两张曝光时间非常短的图像(C) Baumer工业相机Baumer工业相机定序器功能的技术背景Baumer工业相机通过NEOAPI SDK使用定序器功能预期的相机动作技术限制定序器的工作原理 Baumer工业相机通过NE…

Diffusion模型

https://www.zhihu.com/tardis/zm/art/599887666?source_id1005 真值加上noise得到noisy image然后再用网络去predicted noise比较真值的noise和predicted noise之间的差值,来计算lossdenoised image noisy image - predicted noise

1055:判断闰年

【题目描述】 判断某年是否是闰年。如果公元a年是闰年输出Y&#xff0c;否则输出N。 【输入】 输入只有一行&#xff0c;包含一个整数a(0 < a < 3000)。 【输出】 一行&#xff0c;如果公元a年是闰年输出Y&#xff0c;否则输出N。 【输入样例】 2006 【输出样例】…

视觉单目测距原理及实现

视觉单目测距原理及实现 结尾附赠非常宝贵的自动驾驶学习资料 附赠最全自动驾驶学习资料&#xff1a;链接

Vue3:watch监视的5种情况

一、情景说明 在Vue2中&#xff0c;watch的用法如下 https://blog.csdn.net/Brave_heart4pzj/article/details/135604394 这一篇&#xff0c;来学习Vue3中的watch用法 二、案例 1、监视ref定义的数据【基本类型】 引入函数 import {ref,watch} from vue定义变量 // 数据le…

基于Java+SpringBoot+vue的智能农场管理系统详细设计和实现

基于JavaSpringBootvue的智能农场管理系统详细设计和实现 博主介绍&#xff1a;多年java开发经验&#xff0c;专注Java开发、定制、远程、文档编写指导等,csdn特邀作者、专注于Java技术领域 作者主页 央顺技术团队 Java毕设项目精品实战案例《1000套》 欢迎点赞 收藏 ⭐留言 文…

android开发给图片添加水印,水印中包含图片或者图标

之前写过一篇文章&#xff0c;给图片增加水印&#xff0c;不过那个是增加纯文本水印&#xff0c;今天介绍的是以图片叠加的那个是来增加水印。 国际惯例&#xff0c;上代码&#xff1a; private String getWaterMask(String pic) {Bitmap bitmap ImageUtil.fileInputStream(…

printf的栈

#include<stdio.h> #include<stdlib.h> int main() {int *p;pmalloc(8);*p1;*p2;p--;printf("%d %d\n",*p,*p);return 0; }

SpringBoot(接受参数相关注解)

文章目录 1.基本介绍2.PathVariable 路径参数获取信息1.代码实例1.index.html2.ParameterController.java3.测试 2.细节说明 3.RequestHeader 请求头获取信息1.代码实例1.index.html2.ParameterController.java3.测试 2.细节说明 4.RequestParameter 请求获取参数信息1.代码实例…

如何在群晖用Docker本地搭建Vocechat聊天服务并无公网ip远程交流协作

文章目录 1. 拉取Vocechat2. 运行Vocechat3. 本地局域网访问4. 群晖安装Cpolar5. 配置公网地址6. 公网访问小结 7. 固定公网地址 如何拥有自己的一个聊天软件服务? 本例介绍一个自己本地即可搭建的聊天工具,不仅轻量,占用小,且功能也停强大,它就是Vocechat. Vocechat是一套支持…

LabVIEW飞机液压基础试验台测试系统

LabVIEW飞机液压基础试验台测试系统 为解决飞机液压基础实验台人工控制操作复杂、测试时间长、测试流程易出错等问题&#xff0c;开发了一套基于LabVIEW的飞机液压基础试验台测试系统。该系统通过计算机控制&#xff0c;实现了高度自动化的测试流程&#xff0c;有效提高了测试…

图片编辑器tui-image-editor

提示&#xff1a;图片编辑器tui-image-editor 文章目录 前言一、安装tui-image-editor二、新建components/ImageEditor.vue三、修改App.vue四、效果五、遇到问题 this.getResolve is not a function总结 前言 需求&#xff1a;图片编辑器tui-image-editor 一、安装tui-image-ed…

手写简易操作系统(八)--特权级以及TSS

前情提要 我们在这里梳理一下上面几节讲的内容 首先是计算机开机&#xff0c;BIOS接过第一棒&#xff0c;将第一个扇区MBR的内容导入到内存 0x7c00 的位置。 然后就是MBR中我们自己写的内容&#xff0c;将Loader导入到 0x600 的地址&#xff0c;Loader设置了GDT&#xff0c;…

Java面向对象:类与对象

Java面向对象&#xff1a;类与对象 在Java编程中&#xff0c;面向对象是一种重要的编程范式。其中&#xff0c;类与对象是构建面向对象程序的基本组件。本文将深入探讨Java中类与对象的概念&#xff0c;并提供一些练习加深理解。 类与对象的概念 在Java中&#xff0c;类是对…