IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> (二)数据结构-线性表 -> 正文阅读

[数据结构与算法](二)数据结构-线性表

一、线性表的基本概念

线性表是具有相同数据类型的n(n>=0)个数据元素的有序序列,其中n为表长,当n=0的时候线性表是一个空表。

1.线性表是最基本且最常用的一种线性结构

2.线性结构的基本特点:除第一个元素无直接前驱,最后一个元素无直接后继外,其他每个元素都有一个前驱和后继。

二、 线性表的存储结构/物理结构

线性表的存储结构/物理结构分为:顺序表(顺序存储)、链表(链式存储)
在这里插入图片描述

三、线性表的顺序表示/顺序存储

3.1顺序表的定义

线性表的顺序存储又称为顺序表
线性表的顺序表示:指的是用一组地址连续的存储单元依次存储线性表的数据元素

注意:
1.线性表中元素的位序从1开始,而数组元素的下标是从0开始的

3.2顺序表特点

  • 顺序表最主要的特点就是随机访问,即通过首地址和元素序号可在时间O(1)内找到制定的元素
  • 顺序表的存储密度高,每个节点置存储数据元素。
  • 顺序表逻辑上相邻的元素物理上也相邻,所以插入和删除需要移动大量的元素
  • 表中元素的逻辑顺序与物理顺序相同

四、线性表的链式存储

- 单链表:

- 对于每个链表结点除了存放元素自身的信息之外,还需要存放一个指向后继的指针;(一个数据域data,一个指针域next)
	- 缺点:1.单链表结点只有一个指向后继的结点,使得单链表只能从头结点依次顺序地向后遍历
	- 缺点:2.要访问某个**节点**的前驱结点时,只能从头开始遍历O(n),访问后继结点时O(1)

- 双链表:

- 为了克服单链表的缺点,双链表结点中有两个指针域(prior,next)
- 分别指向其前驱结点,后继节点

- 循环链表:分为循环单、双链表

- 与单链表不同的是,表中最后一个结点不是null
- 而是指向头节点从而整个链表形成一个环
- 分别指向其前驱结点,后继节点
- 从表中任一一个结点出发都能找到线性表中的其他结点 

- 静态链表:

- 与线性表一样,都需要预先分配一块连续的内存
- 结点有数据域data,指针域next(此处指针的结点是相对地址,是数组下标,又称为游标) 	

五、链式存储表示

5.1 单链表的定义

1.单链表由表头唯一确定,因此单链表可以用头指针的名字来命名
2.若头指针名字为L,则把链表成为表L
3.指针变量p:表示结点地址
结点变量*p:表示一个结点

5.2链表的存储表示

在这里插入图片描述

六、顺序表与链表的比较

  1. 存取(读写)方式
    顺序表可以顺序存储,也可以随机
    链表只能从表头顺序存取元素

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

  3. 查找、插入和删除操作
    按值查找:顺序表无序,二者都是O(n)
    若有序,可以采用折半查找,时间复杂度为O(log2n)
    按序号查找:顺序表支持随机存储O(1),链表平均时间复杂度O(n)

  4. 空间分配
    顺序存储在静态存储分配情况下,一旦分配好就不能扩充,因此需要预先分配大量空间
    链式存储只在需要时神情分配即可,内存有空间就可以分配,更高效、操作灵活

七、现实如何选取存储结构:

  1. 基于存储的考虑
    难以估计线性表长度或存储规模不适合用顺序表
  2. 基于运算的考虑
    按序号访问时顺序表时间复杂度O(1),链表O(n)
  3. 基于环境的考虑
    顺序表容易实现,任何高级语言都有数组类型;
    而链表的操作是基于指针的

八、关于线性链表的术语:

1.结点:数据元素的存储映像。由数据域和指针域两部分组成
2.头结点:链表的首元结点之前设置的一个结点,结点内通常不存储信息(且单链表的长度是不包括头结点的)
3.头指针:是指向链表的第一个指针

8.1引入头结点的优点

1.便于受援结点的处理
首元结点(第一个数据结点)的地址在头节点的指针域中,所以在链表的第一个位置的操作和其他操作一致,无须进行特殊处理
2.便于空表和非空表的统一处理
无论链表是否为空,头指针都是指向头节点的非空指针

  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2022-07-20 19:09:52  更:2022-07-20 19:12:37 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 23:50:25-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码