数据结构复习资料 第2章.pdfVIP

  • 1
  • 0
  • 约8.38千字
  • 约 5页
  • 2021-09-26 发布于江苏
  • 举报
第2 章 顺序表 一、复习要点 本章主要讨论数组抽象数据类型及利用数组实现的顺序表、字符串等数据结构。它们都 是线性结构。但数组是直接存取结构,可以根据数组元素的下标直接在数组中存取该元素, 而利用它实现的顺序表是顺序存取结构,所有数据元素集中存储于表的前端。字符串是顺序 表的特化。 本章复习的要点: 1、基本知识点 2、算法设计 ➢ 静态数组对象的定义,动态数组对象的定义 ➢ 数组中数组元素的原地逆置 ➢ 递归计算数组长度、数组中所有元素的和及平均值 ➢ 在顺序表中搜索值为item 的元素,在有序顺序表中搜索值为item 的元素 ➢ 在有序顺序表中插入新元素item 到第i 个位置 ➢ 在有序顺序表中删除第i 个元素 ➢ 两个有序顺序表的合并,m 个有序顺序表的合并 二、难点与重点 1、作为抽象数据类型的数组:数组的定义、数组的按行顺序存储与按列顺序存储 ➢ 确定数组元素的三要素:行号、列号、元素值 ➢ 数组元素的存放地址计算 2、顺序表:顺序表的定义、搜索、插入与删除 ➢ 顺序表搜索算法、平均比较次数的计算 ➢ 插入与删除算法、平均移动次数的计算 三、习题的解析 2-3 设有一个线性表 (e , e , …, e , e ) 存放在一个一维数组A[arraySize]中的前n 个数组 0 1 n-2 n-1 元素位置。请编写一个函数将这个线性表原地逆置,即将数组的前n 个原址内容置换为 (en-1, e , …, e , e ) 。 n-2 1 0 【解答】 templateclass Type void inverse ( Type A[ ], int n ) { Type tmp; for ( int i = 0; i = ( n-1 ) / 2; i++ ) { tmp = A[i]; A[i] = A[n-i-1]; A[n-i-1] = tmp; } } 29 2-5 顺序表的插入和删除要求仍然保持各个元素原来的次序。设在等概率情形下, 对有 127 个元素的顺序表进行插入, 平均需要移动多少个元素? 删除一个元素, 又平均需要移动多少 个元素? 【解答】 若设顺序表中已有n = last+1 个元素,last 是顺序表的数据成员,表明最后表项的位置。 又设插入或删除表中各个元素的概率相等,则在插入时因有n+1 个插入位置(可以在表中最 后一个表项后面追加),每个元素位置插入的概率为1/(n+1),但在删除时只能在已有n 个表 项范围内删除,所以每个元素位置删除的概率为1/n。 插入时平均移动元素个数AMN(Averagy Moving Number )为 1 n 1 1 1 (n 1)n n 1 AM   (n i 1)  ((n 1) (n 2) 10)   n n n 2 2 i0 删除时平均移动元素个数AM 为 1 n   1 1 n(n  1) n   AM  n i  ( n  ( n 1)   1  0 )   n

文档评论(0)

1亿VIP精品文档

相关文档