- 1、本文档共131页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第二章
线性表
;2.1 线性表的逻辑结构;通过本章的学习,读者应能掌握
线性表的逻辑结构和存储结构,
以及线性表的基本运算以及实现算法。 ;2.1
线性表的逻辑结构;第二章 线性表;线性结构的定义:;2.1 线性表的基本概念;(a0, a1, … ai-1,ai, ai+1 ,…, an-1)
; ( A, B, C, D, …… , Z); 强调
本课程不仅要从概念和方法上了解每一种数据结构的
逻辑结构和基本操作,更重要的是要学习如何在计算机上
实现,即如何在计算机上存储数据结构?如何在计算机上
实现对数据结构的各种操作,为此,我们将用计算机语言
来描述数据的存储结构,用计算机语言来描述这些操作的
算法,本课程我们用类C语言做为描述语言。
;线性表是一种典型的线性结构。
数据的运算是定义在逻辑结构上的,而运算的具体实现则是在存储结构上进行的。
数据结构有两种存储方式: 顺序存储,链式存储, 线性表也可以用这两种方法实现。
在计算机内,线性表有两种基本的存储结构:
顺序存储结构和链式存储结构。
下面我们分别讨论这两种存储结构以及对应存储结构下实现各操作的算法。;线性表的存储结构;2.2
线性表的顺序存储结构;2.2.1 顺序表;2.2 线性表的顺序存储和实现;2.2.1 顺序表;一、 顺序表的存储结构表示;(1) 逻辑上相邻的数据元素,其物理上也相邻;
(2) 若已知表中首元素在存储器中的位置,则其他元素存放位置亦可求出(利用数组V[n]的下标)。;a0;4、用C语言描述;设有一维数组M,下标的范围是0到9,每个数组元素用相邻的5个字节存储。存储器按字节编址,设存储数组元素M[0]的第一个字节的地址是98,则M[3]的第一个字节的地址是多少?;?
char V[30];
void build() /*字母线性表的生成,即建表操作*/
{ int i;
V[0]=a;
for( i=1; i=n-1; i++ )
V[i]=V[i-1]+1;
};void main(void) /*主函数,字母线性表的生成和输出*/
{ n=26; /* n是表长,是数据元素的个数,而不是V的
实际下标*/
build( );
display( );
}; 由于C语言中的一维数组也是采用顺序存储表示,故可以用数组类型来描述顺序表。
又因为除了用数组来存储线性表的元素之外,顺序表还应该用一个变量来表示线性表的长度属性,所以我们用结构类型来定义顺序表类型
; # define ListSize 100 线性表可能达到的最大长度;
typedef int DataType;
typedef struct{
DataType data[ListSize]; /* 线性表占用的数组空间*/
int length; /*记录线性表中最后一个元素在数组data [ ]
中的位置(下标值),空表置为-1*/
} Sqlist;
注意区分元素的序号和数组的下标,
如a1的序号为1,而其对应的数组下标为0。;a1;线性表的顺序存储结构总结;;2.2.2 顺序表上实现的基本运算;二、 顺序表的实现(或操作);2.2.2 顺序表上实现的基本操作
在顺序表存储结构中,很容易实现线性表的一些操作,如线性表的构造、第i个元素的访问。
注意:C语言中的数组下标从“0”开始,因此,若L是Sqlist类型的顺序表,则表中第i个元素是l.data[i-1]。
以下主要讨论线性表的插入和删除两种运算。
;插入
定义:线性表的插入是指在第I(1?i ? n+1)个元素之前插入一个新的数据元素x,使长度为n的线性表;顺序表的插入:;插入算法示意图;内存;在线性表(n个元素)的第i个位置前插入一个元素;在线性表的第i个位置前插入一个元素的示意图如下:;在一个顺序表中第i个元素之前插入一个元素x的函数:;顺序表的删除:;删除算法示意:;内存;实现步骤:
将第i+1 至第n 位的元素向前移动一个位置;
表长减1。
注意:事先需要判断,删除位置i 是否合法?;1;在一个顺序表中删除第i个元素的函数: ;顺序表的运算效率分析;推导:假定在每个元素位置上插入x的可能性都一样(即概率P相同),则应当这样来计算平均执行时间:
将所有位置的执行时间相加,
您可能关注的文档
- 通信电源知识技术总结.docx
- 通信电子电路第5章_反馈控制电路技术总结.ppt
- 数据结构第十章内部排序技术总结.ppt
- 通信概预算书籍第3章技术总结.ppt
- 数据结构第十章内排序技术总结.ppt
- 数据结构-二叉树类型的实现技术总结.doc
- 软件项目进度计划题库.ppt
- 数据结构复习题及答案技术总结.docx
- 软件需求规约题库.docx
- 数据结构复习题技术总结.docx
- 2025年网络文学平台版权运营模式创新与版权保护体系构建.docx
- 数字藏品市场运营策略洞察:2025年市场风险与应对策略分析.docx
- 全球新能源汽车产业政策法规与市场前景白皮书.docx
- 工业互联网平台安全标准制定:安全防护与合规性监管策略.docx
- 剧本杀剧本创作审核标准2025年优化与行业自律.docx
- 2025年新能源电动巡逻车在城市安防中的应用对城市环境的影响分析.docx
- 全渠道零售案例精选:2025年行业创新实践报告.docx
- 2025年网约车司乘纠纷处理机制优化与行业可持续发展报告.docx
- 2025年宠物烘焙食品市场法规政策解读:合规经营与风险规避.docx
- 2025年宠物行业数据安全监管政策影响分析报告.docx
文档评论(0)