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

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.hqwc.cn/news/529001.html

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

相关文章

【数据库系统概论】第2章:关系数据库

文章目录 0. 前言2.1 关系数据结构及形式化定义2.1.1关系2.1.2 关系模式 2.2 关系操作2.3 关系的完整性2.4 关系代数 0. 前言 关系数据库系统是支持关系模型的数据库系统。第一章初步介绍了关系模型及其基本术语。本章将深入介绍关系模型。 按照数据模型的三个要素,…

JS-06-数组

一、数组的创建与访问 见:JS-04-javaScript数据类型和变量 JavaScript的Array可以包含任意数据类型,并通过索引来访问每个元素。 要取得Array的长度,直接访问length属性: let arr [1, 2, 3.14, Hello, null, true]; console.l…

系统运维网络知识汇总

一、系统运维中网络方面的规划与思考 系统运维建立在网络的基础之上,如果没有一个相对合理的网络架构,恐怕系统运维做起来也不是那么的顺手。一个公司基本上都会把网络和服务器独立开来,划分不同的区域摆放设备,很多时候都是物理…

基于springboot+vue实现食品安全管理系统项目【项目源码+论文说明】计算机毕业设计

基于springboot实现食品安全管理系统演示 摘要 食品行业同其他行业有很多的差别,食品行业不仅要管食品的生产和销售,还要管食品的库存和保质期,那么对于食品管理者来说,就存在着一定的难度。况且食品的种类复杂,存储条…

JavaWeb实验 Servlet基础编程

实验目的 编写Servlet代码;熟悉并掌握Servlet的使用和配置。 实验内容 【1】利用Servlet实现一个简单的登录系统,要求: 包括登录页面、登录成功页面和登录失败提示页面;用户可以在登录页面输入用户名和密码;点击登…

面试题:分布式锁用了 Redis 的什么数据结构

在使用 Redis 实现分布式锁时,通常使用 Redis 的字符串(String)。Redis 的字符串是最基本的数据类型,一个键对应一个值,它能够存储任何形式的字符串,包括二进制数据。字符串类型的值最多可以是 512MB。 Re…

简单了解一个数据包在网络的一生

在主题之前,我想先谈谈目前计算机的网络模型,主要谈谈 TCP/IP 模型: 应用层:产生最原始的数据,常见协议如 http、ftp、websocket、DNS、QUIC 传输层:传递应用层的数据给网络层,必要时进行切割&…

mysql题库详解

1、如何创建和删除数据库? 创建数据库 CREATE DATABASE 数据库名; 删除数据库 drop database 数据库名; 2、MyISAM与InnoDB的区别? 1)事务:MyISAM 不支持事务 InnoDB 支持 2)行锁/表锁:MyISAM 支持表级锁…

#QT(QString)

1.IDE:QTCreator 2.实验 3.记录 4.代码

QT开发(二) 构建QMainWindow

1、前言 QMainWindow是Qt框架中用于创建应用程序主窗口的类。它是许多GUI应用程序的基础,提供了丰富的功能和灵活性,以支持用户界面的创建和管理。 QMainWindow的结构主要包括以下几个部分: 菜单栏(Menu Bar)&#…

【超级干货】播放器核心知识点-音视频同步原理深入剖析

引言 本文是自己学习利用ffmpeg实现音视频同步播放的总结文档,参考了网上一些博客,同时调试ffplay源码进行理解,站在巨人的肩膀上学习,感谢开源和分享精神。文中粘贴的代码每行都有注释,确保读者能理解所涉函数的每一行代码的意义。 章节 因为ffplay源码阅读起来比较复…

微服务技术栈之rabbitMQ基础入门(一)

准备工作: 1,创建空的工程: 首先我们先创建一个空的工程,并且命名为 mq-java 2,创建一个生产者springboot工程(plblisher): 设置项目的基本信息: 勾选版本和依赖&…