200线性表bak.ppt

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

2 线性表的顺序表示和实现 一、 顺序表的表示 用一组地址连续的存储单元依次存储线性表的元素。 线性表顺序存储特点: 1. 逻辑上相邻的数据元素,其物理上也相邻; 2. 若已知表中首元素在存储器中的位置,则其他元素存放位置亦可求出(利用数组V[n]的下标)。 线性表的顺序存储结构示意图 用数组V来存放26个英文字母组成的线性表(a,b,c,…,z),写出在顺序结构上生成和显示该表的C语言程序。 二、 顺序表的实现(或操作) 实现步骤: 将第i+1 至第n 位的元素向前移动一个位置; 表长减1。 注意:事先需要判断,删除位置i 是否合法? 应当有1≤i≤n 或 i=[1, n] 顺序存储结构小结 3 线性表的链式表示和实现 一、 链表的表示 (1)链式存储特点 (2)与链式存储有关的术语 (3)补充:结构数据类型的C表示法 例:请画出26 个英文字母表的链式存储结构。 (2) 与链式存储有关的术语: 4)头指针、头结点和首元结点的区别 示意图如下: 例1: sizeof(x)——计算x的长度 malloc(m) —开m字节空间 free(p) ——删除一个变量 (3) 补充结构数据类型的C表示法 二、 链表的实现 1. 单链表的建立和输出 2. 单链表的修改 3. 单链表的插入 4. 单链表的删除 1. 单链表的建立和输出 实例:用单链表结构来存放26个英文字母组成的线性表(a,b,c,…,z),请写出C语言程序。 将全局变量及函数提前说明: void build( ) //字母链表的生成。要一个个慢慢链入 void display() /*字母链表的输出*/ 2. 单链表的修改(或读取) 思路:要修改第i个数据元素,必须从头指针起一直找到该结点的指针p,然后才能:p-data= new_value 。 3. 单链表的插入 4. 单链表的删除 讨论1: 链表能不能首尾相连?怎样实现? 讨论2: 单链表只能查找结点的直接后继,若想查找结点的直接前驱,该如何设计? 答:能。只要将表中最后一个结点的指针域指向头结点即可 (P-next=head;) 。这种形成环路的链表称为循环链表。 特点: 1、从任一结点出发均可找到表中其他结点。 2、操作仅循环条件与单链表不同: 单链表 ----- p = NULL 或 p -next =NULL 循环链表----- p= head 或 p-next = head * 一、 顺序表的表示 二、 顺序表的实现 三、 顺序表的运算效率分析 把逻辑上相邻的数据元素存储在物理上相邻的存储单元中的存储结构。 线性表的顺序表示又称为顺序存储结构或顺序映像。 顺序存储定义: 顺序存储方法: 简言之: 逻辑上相邻的元素,物理上也相邻 可以利用数组V[n]来实现。 注意:在C语言中数组的下标是从0开始,即: V[n]的有效范围是从 V[0]~V[n-1] 设首元素a1的存放地址为LOC(a1)(称为首地址), 设每个元素占用存储空间(地址长度)为L字节, 则表中任一数据元素的存放地址为: LOC ( ai+1 ) = LOC( ai ) + L LOC ( ai ) = LOC( a1 ) + L *(i -1) 对上述公式的解释如图所示 an …… ai+1 ai …… a2 a1 地址 内容 元素在表中的位序 1 i 2 n 空闲区 i+1 L b=LOC(a1) b + L b +(i-1)L b +(n-1)L b +(max-1)L LOC ( ai ) = LOC( a1 ) + L *(i -1) ? char V[30]; void build() /*字母线性表的生成,即建表操作*/ { int i; V[0]=a; for( i=1; i=n-1; i++ ) V[i]=V[i-1]+1; } 核心语句: 法1 V[i]= V[i-1]+1; 法2 V[i]=’a’+i; 法3 V[i]=97+i; 例2 void main(void) /*主函数,字母线性表的生成和输出*/ { n=26; /* n是表长,是数据元素的个数,而不是V的 实际下标*/ build( ); display( ); } void display( ) /*字母线性表的显示,即读表操作*/ { int i; for( i=0; i=n-1; i++ )

文档评论(0)

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

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

1亿VIP精品文档

相关文档