实验七-自组织线性表.docVIP

  • 0
  • 0
  • 约3.38千字
  • 约 9页
  • 2021-12-04 发布于天津
  • 举报
______________________________________________________________________________________________________________ HUNAN UNIVERSITY 课程预习报告 题 目: 自组织线性表 学生姓名 学 生学号 2012080102 专 业班 级 计算机科学与技术班 精品资料 ______________________________________________________________________________________________________________ 完成日期 精品资料 ______________________________________________________________________________________________________________ 一、需求分析 自组织线性表根据估算的访问频率排列记录, 先放置请求频率最高的记录, 接下来是请 求频率次高的记录, 依此类推。 自组织线性表根据实际的记录访问模式在线性表中修改记录 顺序。 自组织线性表使用启发式规则决定如何重新排列线性表。 转置方法的基本原理是, 在 一次查找过程中,一旦找到一个记录,则将它与前一个位置的记录交换位置。这样,随着时 间的推移, 经常访问的记录将移动到线性表的前端, 而曾经频繁使用但以后不再访问的记录 将逐渐退至线性表的后面。 尽管一般情况下自组织线性表的效率可能没有查找数和已排序的线性表那么好, 但它也 有自身的优势。 它可以不必对线性表进行排序, 新记录的插入代价很小; 同时也比查找树更 容易实现,且无需额外的存储空间。 程序能达到的功能: 1 ) 从文件中读入一组汉字集合,用自组织线性表保存。 2 ) 在查询时,采用转置法调整自组织线性表的内容。 3 ) 从文件中依次读入需查询的汉字,把查询结果保存在文件中(如找到,返回比较的次数,如果没有找到,返回比较的次数) 二、概要设计 抽象数据类型 由于每个汉字都有唯一的第一元素和最后元素, 每个元素都有唯一的前驱和唯一的 后继所以我们用线性表来存储汉字, 且汉字是占两个字符位置, 因此我们用二维数组来 存储汉字。 ADT Array_2{ D={ai,j|ai,j ∈汉字字符 ,0≤ i≤ b1-1, 0 ≤ j≤ b2-1} 精品资料 ______________________________________________________________________________________________________________ R={R1,R2} R1={ai,j,ai+1,j|ai,j,ai+1,j ∈D,0 ≤ i≤ b1-2,0 ≤ j≤ b2-1} R2={ai,j,ai,j+1|ai,j,ai,j+1 ∈D,0 ≤ i≤ b1-1,0 ≤ j≤ b2-2} 基本操作 P: InitArray(A,b1,b2); // 初始化二维数组 DestroyArray (A); // 删除这个二维数组 ValueArray (A, e,index1,index2); AssignArray (A, e, index1,index2); } ADT Array_2 算法的基本思想 将文件中的汉字读入存储数组, 将需要查找的汉字输入查找数组中, 然后将查找数 组中的汉字依次与存储数组中的汉字进行比较, 若找到该汉字则进行转置操作, 交换该 汉字与前一个汉字的位置和比较次数, 若没有找到则输出存储数组的长度, 循环此操作 一直到查找数组中的汉字全部查找完毕。 程序流程 程序主要由三个步骤组成: 输入模块:读入两组汉字。 处理模块:计算两组汉字的个数,进行查找,互换操作。 输出模块:将查找结果输出。 三、详细设计 实现概要设计中的数据类型 倒置函数,查找到一次后,与前一个位置的数互换 精品资料 ______________________________________________________________________________________________________________ bool flag; void Inverse(char a[][2],int i,int j){ char temp=a[i][0]; a[i][0]=a[j][0]; a[j][0]=temp; temp=a[i][1]; a[i][1]=a[j][1]; a[j][1]=temp; } 查找汉字 int search(char a[][2],int size,char c[2]){

文档评论(0)

1亿VIP精品文档

相关文档