线性表的顺序存储结构及实现
线性表的顺序存储结构定义
一、线性表的介绍
线性表是最基本、最简单、也是最常用的一种数据结构。
线性表中数据元素之间的关系是一对一的关系,即除了第一个和最后一个数据元素之外,其它数据元素都是首尾相接的(注意,这句话只适用大部分线性表,而不是全部。比如,循环链表逻辑层次上也是一种线性表(存储层次上属于链式存储),但是把最后一个数据元素的尾指针指向了首位结点)。
二、什么是顺序表?
1 :线性表的顺序存储称为顺序表(sequential list),其基本思zhunc想是用一段地址连续存储单元的存循单元依次存储线性表的数据元素,则第,如图1所示。设顺序表的每个元素占用c个存储单位,则第i个元素存储地址为:
LOC(ai
)=LOC(a1
)+(i-1
)*c
LOC(ai)=LOC(a1)+(i-1)*c
图1 顺序表中元素ai的存储地址
2: 容易看出,顺序表中数据元素的存储地址是其序号的线性函数,只要确定了存储顺序表的的起始地(即基地址),计算任意一个元素的存储地址的时间是相等的,具有这一特点存储结构称为随机存取结构。
三、数组的长度和线性表的长度
1: 通常用一维数组来实现顺序表,也就是把线性表中相邻的元素存储在数组中相邻的位置,从而导致了数据元素的序号和在放它的数组下标之间具有一一对应关系,如图2所示。需要强调的是,C语言中数组的下标是从0开始的,而线性表中元素的序号是从1开始的,也就是说,线性表中第i个元素存储在数组中下标为i-1的位置.
2: 数组需要分配固定长度的数组空间,因此,必须确定存放线性表的数组空间的长度。因为在线性表中可以进行插入操作,则数组的长度就要大于当前线性表的长度。用MaxSize表示数组的长度,用
表示线性表的长度,如图2所示。
图2 数组的长度和线性表的长度具有不同含义
下面给出顺序表的存储结构定义:
#define MaxSize 100 //假设顺序表最多存放100个元素
typedef int Datarype; //定义线性表的数据类型,假设为int型
typedef struct
{Datarype data[Maxsize]; //存放数据元素的数组int length; //线性表的长度}SeqList; //顺序表类型
线性表的顺序存储结构及实现相关推荐
- 数据结构和算法:(3)3.1线性表的顺序存储结构
-----------------------1.线性表基础操作------------------------ 线性表:(List)由零个或多个数据元素组成的有限序列. 首先他是一个序列,元素之间是 ...
- C和C++线性表的顺序存储结构
C和C++线性表的顺序存储结构 基本概念 设计与实现 优点和缺点 基本概念 设计与实现 插入元素算法 判断线性表是否合法 判断插入位置是否合法 把最后一个元素到插入位置的元素后移一个位置 将新元素插入 ...
- 《数据结构》c语言版学习笔记——线性表的顺序存储结构
线性表的顺序存储结构 第一章 线性表的顺序存储结构 文章目录 线性表的顺序存储结构 前言 一.顺序存储结构的建立 1.条件 2.代码 二.顺序存储结构的获得元素 1.条件 2.代码 三.顺序存储结构的 ...
- 线性表的顺序存储结构之顺序表类的实现_Java
在上一篇博文--线性表接口的实现_Java中,我们实现了线性表的接口,今天让我们来实现线性表的顺序存储结构--顺序表类. 首先让我们来看下顺序表的定义: 线性表的顺序存储是用一组连续的内存单元依次存放 ...
- 数据结构开发(3):线性表的顺序存储结构
0.目录 1.线性表的本质和操作 2.线性表的顺序存储结构 3.顺序存储结构的抽象实现和具体实现 3.1 SeqList 3.2 StaticList 和 DynamicList 4.顺序存储线性表的 ...
- 线性表之顺序存储结构相关算法学习
作为一名准备干一辈子的程序员,学习算法还是很有必要的.所以从基础开始了.学习教材 是大话数据结构. 线性表的顺序存储结构,指的是用一段地址连续的存储单元依次存储线性表的数据元素.代码 参照教材 采用c ...
- 线性表:2.线性表的顺序存储结构--顺序表及C语言实现
逻辑结构上呈线性分布的数据元素在实际的物理存储结构中也同样相互之间紧挨着,这种存储结构称为 线性表的顺序存储结构 . 也就是说,逻辑上具有线性关系的数据按照前后的次序全部存储在一整块连续的内存空间中, ...
- 数据结构之线性表之顺序存储结构(3)
1 前言 经过前两张的理论基础,我相信大家都能简单的明白了数据结构和算法一些常用的概念了,从今天开始我们开始学习数据结构中线性表,一起叩响数据结构的大门. 2 详述 线性表(List):零个或者多个数 ...
- 线性表之顺序存储结构
第三章 线性表:零个或多个数据元素的有限序列. 若将线性表标记为(a1,a2,...ai-1,ai,ai+1,...,an), 当i=1,2,...n-1时,ai有且仅有一个直接后继, 当i=2,3, ...
- 线性表的顺序存储结构及基本操作
学习书籍<大话数据结构>,自学完后,总结一下,以后也好复习 ,欢迎互相交流. 线性表的基本操作功能如下: InitList(*L): 初始化操作,建立一个空的线性表L L ...
最新文章
- ML与math:机器学习与高等数学基础概念、代码实现、案例应用之详细攻略——基础篇
- linux tar打包大文件并分割传输另一台linux服务器
- HDU 4121 Xiangqi 模拟题
- 打印容器_3D打印:增材点阵结构在压力容器优化设计中的应用
- python官网中cloudword在哪_Py之wordcloud:python中非常有趣的词云图wordcloud简介、安装、使用方法...
- java程序内存泄漏场景及预防
- HDU 6704 K-th occurrence(主席树 + RMQ + 后缀数组)题解
- 控制用户创建课程权限
- OpenGL 概念整理
- 解析DATASTAGE导出文件dsx和congnos的mdl文件
- Reinforced Neighborhood Selection Guided Multi-Relational Graph Neural Networks阅读笔记
- 凸优化第三章凸函数 3.3 共轭函数
- BSC Web3生态深度研究
- 秀一波酷炫可视化大屏!
- lucene(11)
- 参考基因组 坐标转换 hg38 hg19
- 用GPIO模拟SPI接口读取传感器数据
- format函数用法详解
- 关于赛车游戏制作的一点体会
- git / Git 内部原理揭秘
热门文章
- android 2.2 usb调试,小米 2/2S 开启USB调试模式
- (最简单)小米手机5X的usb调试模式在哪里开启的流程
- 短序比对工具简介bowtievs BWA vs Subread vs SOAP vs NovoAlign
- 镜像构建时报错:Docker build Error : COPY failed: file not found in build context or excluded by .dockerigno
- linux项目实施总结,[转载]SAP项目实施总结
- Word——转载-LaTeX如何在Word中使用(一)
- 【SpringBoot】2021终极版shiro+jwt整合策略,包含shiro1.5+新特性,极简配置,全网独家。
- html把单选框改变样式
- linux编译32位的参数,几个Ubuntu 64上编译32位程序碰到的问题
- 大数据开源日志系统比较:scribe、chukwa、kafka、flume