计算机软件技术基础2.2 线性表及其顺序存储结构.pptVIP

计算机软件技术基础2.2 线性表及其顺序存储结构.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
2.2 线性表及其顺序存储结构 2.2.1 线性表及其运算 2.2.2 栈及其应用 2.2.3 队列及其应用 2.2.1 线性表及其运算 1.什么是线性表(Linear List) 线性表是最简单最常用的一种数据结构。 线性表是由一组数据元素构成。 例如:n维向量(x1,x2,…,xn)是一个长度为n的线性表,其中的每一个分量就是一个数据元素。 英文小写字母表(a,b,c,…,z)是一个长度为26的线性表 一年中的四个季节(春,夏,秋,冬)是一个长度为4的线性表 矩阵是一个比较复杂的线性表 学生情况登记表是一个复杂的线性表,由若干数据项组成的数据元素称为记录(record) 由多个记录构成的线性表又称为文件(file) 线性表是由n(n≥0)个数据元素a1,a2,…,an组成的一个有限序列,表中的每一个数据元素,除了第一个外,有且只有一个前件,除了最后一个外,有且只有一个后件。即线性表或是一个空表,或可以表示为 (a1,a2,…,ai,…,an) 其中ai(i=1,2,…,n)是属于数据对象的元素,通常也称其为线性表中的一个结点。 非空线性表结构特征: (1)有且只有一个根结点a1,它无前件; (2)有且只有一个终端结点an,它无后件; (3)除根结点与终端结点外,其它所有结点有且只有一个前件,也有且只有一个后件。 线性表中结点的个数n称为线性表的长度。当n=0时,称为空表。 2. 线性表的顺序存储结构 线性表的顺序存储结构基本特点: (1)线性表中所有元素所占的存储空间是连续的; (2)线性表中各数据元素在存储空间中是按逻辑顺序依次存放的。 线性表中第i个元素ai在计算机存储空间中 的存储地址为 ADR(ai)=ADR(a1)+(i-1)k 长度为n的线性表 (a1,a2,…,ai,…,an) 顺序存储结构 整型一维数组存放 长度为8的线性表 (29,18,56,63,35,24,31,47) 建立空线性表的顺序存储空间 (即初始化线性表的顺序存储空间) #include stdlib.h void initsl(v,m,n) ET *v; int m, *n; { v=malloc(m*sizeof(ET)); *n=0; return; } 释放线性表的顺序存储空间 free(v); 线性表顺序存储结构下的主要运算: (1)在线性表的指定位置处加入一个新的元素(即线性表的插入); (2)在线性表中删除指定的元素(即线性表的删除); (3)在线性表中查找某个(或某些)特定的元素(即线性表的查找); (4)对线性表中的元素进行整序(即线性表的排序); (5)按要求将一个线性表分解成多个线性表(即线性表的分解); (6)按要求将多个线性表合并成一个线性表(即线性表的合并); (7)复制一个线性表(即线性表的复制); (8)逆转一个线性表(即线性表的逆转)等。 3.线性表在顺序存储下的插入运算 线性表在顺序存储下的插入算法 输入:线性表的存储空间V(1:m);线性表的长度n(n≤m);插入的位置i(i表示在第i个元素之前插入);插入的新元素b。 输出:插入后的线性表存储空间V(1:m)及线性表的长度n。 PROCEDURE INSL(V,m,n,i,b) IF (n=m) THEN { OVERFLOW;RETURN} IF (i>n) THEN i=n+1 IF (i<1) THEN i=1 FOR j=n TO i BY -1 DO V(j+1)=V(j) V(i)=b n=n+1 RETURN void insl(v,m,n,i,b) ET v[],b; int m,*n,i; { if (*n==m) { printf(overflow \n); return; } if (i>*n-1) i=*n+1; if (i<1) i=1; for (j=*n;j<=i;j――) v[j]=v[j-1]; v[i-1]=b; *n= *n+1; return; } 4.线性表在顺序存储下的删除运算 线性表在顺序存储下的删除算法 输入:线性表的存储空间V(1:m);线性表的长度n(n≤m); 删除的位置i(表示删除第i个元素)。 输出:删除后的线性表存储空间V(1:m)及线性表的长度n。 PROCEDURE DESL(V,m,n,i) 1.

文档评论(0)

xinshengwencai + 关注
实名认证
文档贡献者

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

版权声明书
用户编号:5311233133000002

1亿VIP精品文档

相关文档