第2章 线性表堆栈与队列.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第2章 线性表堆栈与队列

数据结构 第二章 线性表堆栈与队列 第二章目录 2.1 数组及其顺序存储结构 2.2 线性表及其运算 2.3 堆栈及其应用 2.4 队列及其应用 2.5 应用实例及分析 小 结 习题与练习 2.1.1 数组定义 数组是由若干连续存储单元组成的数据集合,每一单元对应一组下标值和一个数组元素。 N 维数组的每个单元对应 n 个下标值。 数组元素可以是基本数据类型(整型、实型、字符型等),也可以是结构体或共用体。 同一数组中各个元素必须是同一数据类型,每个数组元素都占有相同数量的存储单元。 2.1.2 数组的顺序存储结构 在程序设计中,表示数组是采用一组连续存储单元顺序地存储各数组元素。 在数组中,可以用下标值随机的访问该数组的任意一个元素。 计算数组元素存储地址的公式称为寻址公式。 设数组为A,每个数组元素占 s 个存储单元,一旦定义了它的维数和各维的上、下界,就可以得到计算数组元素地址的寻址公式。 1. 一维数组寻址公式 设一维数组其下标的下界为LB,上界为UB,第一元素(其下标为LB)的地址为Loc(LB),下标为 i的数组元素A[i]的地址为Loc(i),则计算Loc(i)的寻址公式为: Loc(i)=Loc(LB)+(i-LB)*s 由于数组下标的下界为0,则数组中任一元素 A[i] 的寻址公式为: Loc(i)=Loc(0)+i*s 0≤i≤n-1 2. 二维数组寻址公式 设二维数组采用矩阵元素以行为主存储,即同一行的元素连续存放,存储一行后再存储下一行数据。 则二维数组A[m][n],m、n分别表示数组的行和列,用 Loc(i,j) 表示数组元素A[i][j]的地址,每个单元占用 s 个存储单元,则寻址公式为: Loc(i,j)=Loc(0,0)+(i*n+j)*s 0i≤m-1, 0j≤n-1 例如:定义一A[2][3]数组,对应的矩阵如下: 数组元素A[1][2],其下标i=1,j=2,故它前面已经有i=1行,每行有3个元素,另外本行有j=2个元素,所以在元素A[1][2]之前,本数组已有 5 个元素。 3. 三维数组寻址公式 对于三维数组A[m][n][p]可分解为p个m*n的二维数组。 则按行为主存储的数组元素A[i][j][k]的寻址公式为: Loc[i][j][k]=Loc[0][0][0]+(i*n*p+j*p+k)*s 0i≤m-1, 0j≤n-1,0p≤p-1 对于多维数组(三维以上的数组元素在内存中的存储可以此类推) 2.2.1 线性表(Linear List) 线性表是由若干相同类型元素组成的序列。 表中的数据元素,除了第一个和最后一个以外,有一个且只有一个前驱元素,同时也有一个且只有一个后继元素; 第一个元素只有一个后继元素而无前驱;最后一个元素只有一个前驱元素而无后继。 线性表的元素个数 n 称为该表的长度,当 n=0 时,该表称为空表。 线性表在计算机内存中采用各元素顺序存储的方式,该存储结构叫做向量。 每个线性表元素称为该向量的一个分量。 如果已知线性表第一个元素的地址和每个元素占用的存储单元数,由任一元素的序号就可以计算出该元素在内存中的地址。 编写算法时以一维数组表示线性表最简单,应用的也最普遍。 2.2.2 线性表的运算 线性表可进行如下基本运算: 1. 求线性表的长度 n ; 2. 在第 i 个数据元素前或后插入一个新数据元素 x; 3. 删除第 i 个数据元素; 4. 存取或更新线性表第 i 个元素; 5. 将两个或两个以上的线性表合并成一个线性表; 6. 将一个线性表拆分成多个线性表; 7. 将线性表中各数据元素按某个域值(如关键字) 递增或递减的顺序重新排序; 8. 在线性表中查找满足某种条件的数据元素; 1. 数据元素的插入(insert) 设用一维数组 A[n] 表示线性表,该表原来有m个元素(mn),元素值已给定。 设该数组下标从1开始,即数据元素对应的数组下标从 1 到 n。 要求在第 i 个元素前插入一个新元素值为G,因原线性表的数据元素是连续排列的,中间无空单元,所以第 i 个元素及其后的各元素均需向后移动一个单元位置,这样才能将G插入到 i 位置,且元素总数由 m 增加为(m+1)。 插入函数 算法 void insert(A, int n, m, i, G) { int j; if (i1||in+1)

文档评论(0)

yaocen + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档