实验七自组织线性表_第1页
实验七自组织线性表_第2页
实验七自组织线性表_第3页
实验七自组织线性表_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、HUNAN UNIVERSITY课程预习报告题 目: 自组织线性表 学生姓名 学生学号 2012080102 专业班级 计算机科学与技术班 完 成 日 期 一、需求分析自组织线性表根据估算的访问频率排列记录,先放置请求频率最高的记录,接下来是请求频率次高的记录,依此类推。自组织线性表根据实际的记录访问模式在线性表中修改记录顺序。自组织线性表使用启发式规则决定如何重新排列线性表。转置方法的基本原理是,在一次查找过程中,一旦找到一个记录,则将它与前一个位置的记录交换位置。这样,随着时间的推移,经常访问的记录将移动到线性表的前端,而曾经频繁使用但以后不再访问的记录将逐渐退至线性表的后面。尽管一般情况

2、下自组织线性表的效率可能没有查找数和已排序的线性表那么好,但它也有自身的优势。它可以不必对线性表进行排序,新记录的插入代价很小;同时也比查找树更容易实现,且无需额外的存储空间。程序能达到的功能:(1) 从文件中读入一组汉字集合,用自组织线性表保存。(2) 在查询时,采用转置法调整自组织线性表的内容。(3) 从文件中依次读入需查询的汉字,把查询结果保存在文件中(如找到,返回比较的次数,如果没有找到,返回比较的次数) 二、概要设计抽象数据类型由于每个汉字都有唯一的第一元素和最后元素,每个元素都有唯一的前驱和唯一的后继所以我们用线性表来存储汉字,且汉字是占两个字符位置,因此我们用二维数组来存储汉字。

3、ADT Array_2 D=ai,j|ai,j汉字字符,0ib1-1, 0jb2-1 R=R1,R2 R1=<ai,j,ai+1,j>|ai,j,ai+1,j D,0ib1-2,0jb2-1 R2=<ai,j,ai,j+1>|ai,j,ai,j+1 D,0ib1-1,0jb2-2基本操作P:InitArray(&A,b1,b2); /初始化二维数组DestroyArray (&A); /删除这个二维数组ValueArray (A, &e,index1,index2);AssignArray (&A, e, index1,index2);

4、ADT Array_2算法的基本思想将文件中的汉字读入存储数组,将需要查找的汉字输入查找数组中,然后将查找数组中的汉字依次与存储数组中的汉字进行比较,若找到该汉字则进行转置操作,交换该汉字与前一个汉字的位置和比较次数,若没有找到则输出存储数组的长度,循环此操作一直到查找数组中的汉字全部查找完毕。程序流程程序主要由三个步骤组成: 输入模块:读入两组汉字。处理模块:计算两组汉字的个数,进行查找,互换操作。输出模块:将查找结果输出。三、详细设计实现概要设计中的数据类型倒置函数,查找到一次后,与前一个位置的数互换bool flag;void Inverse(char a2,int i,int

5、 j) char temp=ai0; ai0=aj0; aj0=temp; temp=ai1; ai1=aj1; aj1=temp; 查找汉字int search(char a2,int size,char c2) flag=0; int i; for( i=0;i<size;i+) if(ai0=c0 && ai1=c1) /汉字所占的两位是否都相同 flag=1; break; if(flag) if(i>0) Inverse(a,i,i-1); return i+1; else return size; /如果找不到则查找次数为以保存汉字的个数 主函数:int

6、 main() int i,size1,size2,num; static char a1002,b1002,c2; cin>>a0;/每个汉字占两个字符的位置 for(i=0;i+) if(ai0=0)break; size1=i; /计算该组汉字的长度 cin>>b0; for(i=0;i+) if(bi0=0)break; size2=i; for(i=0;i<size2;i+) num=search(a,size1,bi); c0=bi0; c1=bi1; if(flag) cout<<"查找-"<<c<&

7、lt;"-成功!查找次数为:"<<num<<endl; else cout<<"查找-"<<c<<"-失败!查找次数为:"<<num<<endl; system("pause"); return 0; 算法的时空分析查找的最优情况是比较一次,即(1),最差情况比较n次,即(n)。int search(char a2,int size,char c2) 查找函数函数的调用关系图void Inverse(char a2,int i,int j) 转置函数主函数输入和输出的格式输入  

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论