文档介绍:计算机系数据结构实验报告( 4) 姓名: 学号: 专业班级: 实验目的: 掌握串类型的实现方法和文本模式匹配方法,熟悉一般文字处理软件的设计方法。问题描述: 全屏幕文本编辑器通过终端对文本文件进行创建、插入、删除、修改、存储等操作。用户可完成对文本的插入、删除、修改等功能。实验要求: 1、对光标实现如下操作:上、下、左、右移动一个字符位置; 向前、后翻页; 光标移至文件首、尾;光标移至本行首、尾。 2、实现基本编辑命令: I---- 在当前光标前插入内容,按 ESC 结束 F---- 在当前光标后插入内容,按 ESC 结束 D---- 删除光标所在行 ND--- 删除光标位置开始的 n行 N----- 删除光标上的字符 W---- 将修改后的文本保存下来 Q---- 退出编辑状态。算法分析: (一)串基本操作算法: (1) 字符串初始化 Status StrAssign(HString &S,char *T) // 生成一个其值为串常量*T 的串 S { int len=strlen(T); if(!=NULL) delete ; =new char[len]; if(==NULL) return WRONG; for(i=0;i<len;i++) [i]=T[i]; =len; return OK; } (2) 取子串位置 int Index(HString S,HString T,int pos) { // 取串 T 中和主串 S 中相同字串在第 pos 位置为第一次出现的位置 next=new int[]; GetNext(T,next); while(i<&&j<) if(j==-1||[i]==[j]) { i++; j++; } else j=next[j]; if(j>=) return i-+1; else return 0; } (3) 打印字符串 void StrPrint(HString S) // 输出串 S { for(i=0;i<;i++) cout<<[i]; cout<<std::endl; }(二)文本操作函数(1) 打开文本文件 void Open() // 打开文本文件{ if(filename[0]!='\0') // 判断当前文件是否处于打开状态 cout<<" 文件已经打开! "<<endl; else { cout<<" 输入文件名"; cin>>filename; fstream File(filename); if(!File) // 文件名不存在, 创建新文件 cout<<" 新文件"<<endl; else { while(!()) // 判断文件是否为空, 若否, 读入行数据给 str { (str,LINE_WORD); if(n>=MAX_LINE) // 判断文件是否超出最大行数{ return error; return ;} StrAssign(T[n],str); n++; } (); }}}(2) 保存文本文件 void Save() // 保