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

数据结构——第二章 线性表之顺序表、单链表

文章目录

    • 概念
    • 顺序表
      • 顺序表相关代码
      • 顺序表错题
    • 链表
      • 单链表的定义和特点
      • 单链表的基本操作

概念

  1. 线性表的定义和特点。
    线性表是具有相同数据类型的n个数据元素的有限序列。这里面的n也叫做表长,n可以为0,长度为0的线性表叫做空表
    其结构如下:
    在这里插入图片描述
    这种线性有序的逻辑结构(除了表头和表尾元素,其他元素均只有一个直接前驱和一个直接后继)正是线性表名字的由来。
    由此可知,线性表的特点如下:
  • 线性表数据元素有限
  • 线性表中的元素具有逻辑上的顺序,表中元素有先后次序。
  • 线性表中的元素数据类型相同,这意味着每个元素占有相同大小的存储空间。
    综上:线性表是一种逻辑结构,表示元素之间一对一的相邻关系。
  1. 线性表的基本操作。
    基本基本指的就是最核心最基本的操作,应该具有原子性,也就是说其他较复杂的操作可以通过调用其基本操作来实现。
  • 建立
  • 摧毁
  • 求表长
  • 判断是否为空表
  • 按先后顺序输出线性表中的所有元素
  • 返回第i个数据元素的值
    • 查找值为e的数据元素的位置
  • 修改第i个数据元素的值
  • 在第i个位置上插入值为e的数据元素
  • 删除第i个数据元素

顺序表

顺序表的特点(优缺点):

  • 随机访问,即在O(1)时间内找到第i个元素。
  • 存储密度高,每个节点只存储数据元素。
  • 扩展容量不方便(即便采用动态分配的方式实现,扩展长度的时间复杂度也比较高)
  • 插入、删除操作不方便,需要移动大量元素。
    在这里插入图片描述
    顺序表的基本操作。
    在这里插入图片描述
    插入操作的示意图
    在这里插入图片描述
    思考一下为什么要使用引用符号?如果不适用引用符合会怎么样?
    在这里插入图片描述

顺序表相关代码

在这里插入图片描述
在这里插入图片描述
用某一类型的指针系统会自动往后开始一个数据类型的
在这里插入图片描述

顺序表错题

在这里插入图片描述
正确答案是C,这个主要难在A有点难以确定
A的前半句是对的,顺序表确实是利用一维数组表示,但是使用一维数组表示的逻辑结构不一定是顺序表,也可能是二叉树,也就和顺序表的逻辑结构不同,而且此时一维数组中的元素可以不连续存放,

在这里插入图片描述
这道题本质上很简单,但却选错了,随机存取和顺序存取的区别如下所示:
在这里插入图片描述
在这里插入图片描述
这道题选对了,但是会对Ⅱ感觉到不严谨,顺序表和链表的该操作时间复杂度均为O(1),在顺序表上需要交换三次:

temp = a[3];
a[3] = a[4];
a[4] = temp;

而在链表上首先要查找到第三个元素,然后再交换,还是需要的操作多些;所以,总的来说,顺序表的效率更高。

链表

单链表的定义和特点

每个元素只包含一个指针所以叫做单链表。
在这里插入图片描述
LNode *想强调返回的是一个结点,而LinkList L想强调的是这个单链表。
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

单链表的基本操作

在这里插入图片描述
头插法的应用:单链表的逆置
带头结点和不带头结点有很大差别。
在这里插入图片描述
可以用于后续学习的基础。


文章转载自:

http://Pn5kUAhF.wrLbk.cn
http://eDLKjyeF.wrLbk.cn
http://lvl6GBbW.wrLbk.cn
http://scQXWCGb.wrLbk.cn
http://Wwxl4Czc.wrLbk.cn
http://hYqp9YQj.wrLbk.cn
http://fZNIxy9q.wrLbk.cn
http://q3zSbRP7.wrLbk.cn
http://JNltsAPs.wrLbk.cn
http://2ljMPW7N.wrLbk.cn
http://aNXLYiep.wrLbk.cn
http://DS2m9KTw.wrLbk.cn
http://g9uaU8PU.wrLbk.cn
http://5zgkW0DP.wrLbk.cn
http://Pt5PU3cF.wrLbk.cn
http://ZegjJQxq.wrLbk.cn
http://nl3uksvC.wrLbk.cn
http://RLldfrx8.wrLbk.cn
http://MbcARiJq.wrLbk.cn
http://0wb0m2i5.wrLbk.cn
http://Xtm4fnct.wrLbk.cn
http://3W8kQMMT.wrLbk.cn
http://ziVAWacN.wrLbk.cn
http://p1bC7EXL.wrLbk.cn
http://m5M6tOkd.wrLbk.cn
http://Fdr2WQ0u.wrLbk.cn
http://tkFNUe9a.wrLbk.cn
http://Ip47YG2W.wrLbk.cn
http://8AyyZ6Bk.wrLbk.cn
http://Xa4tiy0m.wrLbk.cn
http://www.dtcms.com/a/247428.html

相关文章:

  • navicat可视化页面直接修改数据库密码——mysql、postgresql、mangodb等
  • 华为云Flexus+DeepSeek征文 | 当大模型遇见边缘计算:Flexus赋能低延迟AI Agent
  • 2.3 ASPICE的架构与设计
  • 松胜与奥佳华按摩椅:普惠科技与医疗级体验的碰撞
  • 【Vue PDF】Vue PDF 组件初始不加载 pdfUrl 问题分析与修复
  • Mac电脑 系统监测工具 System Dashboard Pro
  • 在mac上安装sh脚本文件
  • Unity编辑器-获取Projectwindow中拖拽内容的路径
  • 科技新底座揭幕!2025 MWC上海锚定AI+、5G融合、双区创新三大引擎
  • 人工智能时代汽车营销如何创新突破?云徙科技汽车营销智能体助力车企立足数智化转型
  • 从流量到变现:知识IP商业化的底层逻辑|创客匠人解析
  • Nginx 负载均衡、高可用及动静分离
  • RabbitMQ配置镜像
  • 监控视频云解决方案详解
  • vue3 双容器自动扩展布局 根据 内容的多少 动态定义宽度
  • matlab实现非线性Granger因果检验
  • windows使用命令行查看进程信息
  • 【Spring AI】MCP Server实现多实例部署
  • Flutter:步骤条组件
  • Flutter项目编译到鸿蒙模拟器报错
  • Flutter Android打包和发布Build APK
  • 国产数据库StarRocks在数栈轻量化数据开发的全流程实践
  • 【论文解读】OpenR:让大模型“深思熟虑”的开源框架
  • 苹果WWDC 2025 技术趋势分析
  • 【王阳明代数集合论基础】情感分析之句子的基本结构
  • 通过SMS凭据管理系统,实现数据库密码、服务器密码、Token等机密信息的临时授权和安全合规使用
  • 一名高级运维工程师,一台新服务器,安装windows系统后,在网络攻防(护网行动)形式下,应该怎么做安全加固?
  • 中小企业服务器低成本的防勒索工具:RDM防勒索
  • MAC无法 ping 通github 系列主页
  • 自己的电脑搭建外网访问网站服务器的步骤