数据结构第二次实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数据结构与算法分析课程设计报告
课题名称: A Text Editor Imlementation
提交文档学生姓名:苟丁
提交文档学生学号: 0843042229 同组成员名单:无
指导教师姓名:孙界平
指导教师评阅成绩:
指导教师评阅意见:
.
.
提交报告时间:2010 年 5 月 7 日
1. 实验题目:带括号的算术表达式求值
2. 实验的目的和要求:
1.采用C++的ASCII码文件和串函数实现;
2.熟练掌握串运算的应用;
3.熟练掌握计算机系统的基本操作方法,了解如何编辑、编译、链接和运行一
个C++程序;
4.上机调试程序,掌握查错、排错使程序能正确运行
3.实验的环境:
1、硬件环境:联想笔记本电脑,Intel(R) Pentium(R) Dual T3400 ,2GB内存
2、软件环境:Windows XP 下的Microsoft Visual Studio 2008
4.算法描述:
具体操作与函数描述
(1)编辑一个文本文件,命名为text.txt.
(2)函数run()提供给用户选择符的输入:w,r,I,d,f,c,q,h,n,p,b,e,g,v.
用户可以选择H选择符寻求帮助,得知操作符分别代表的动作。
(3) R代表函数Read()将文本读入缓冲区,缓冲区以前的任何内容都将将消失。
(4) W代表函数Write()将缓冲区的内容写入文本文件。
(5) I代表函数Insert()插入新行,用户可以在适当的提示下键入新行并提供新行。
(6) D代表delete()行数所执行的删除操作,可以删除当前行,并进入下一行。
(7) F代表函数findChar(),用于查找目标行。
(8) C代表函数changLine(),将用户请求的字符串修改成用户请求的替换文本,可选择的是仅在当前行中有效。
(9) Q代表函数quit(),用户执行此命令可以退出编辑。
(10)N代表函数next(),用户可以从当前行移到下一行。
(11)P代表函数pre(),用户可以从当前行移到下一行。
(12)E代表end(),可以移到最后一行。
(13)G代表go(),用户可以指定到选择的行。
(14)V查看缓冲区的全部内
测试程序说明:
测试main()如下,主要定义了一行的长度,主要是执行run()函数,实现用户输入字符选择执行操作的目的。
#include"Utility.h"
#include"MyList.h"
int main(){
const int LG=50;
void run(char);
char inputCh=NULL;
Temp:
cout<<"输入目标文本名字:";
cin>>inputname;
cout<<"输出文本名字:";
cin>>outputname;
ifstream ipf;
ipf.open(inputname,ios::in);
if(ipf.fail())
{
cout<<"不能打开文件!!\n";
goto Temp;
return 0;
}
char ch[LG];
while (!ipf.eof())
{
ipf.getline(ch,LG-1);
List.append(ch);
}
ipf.close();
countL=List.length();
display();
cout<<"你要进行什么操作(输入h 获得帮助):";
char chr=getchar();
do
{
chr=getchar();
if(chr=='\n') continue;
run();
if(toupper(chr)!='E') cout<<"你要进行什么操作(输入h 获得帮助):";
}while((toupper(chr)!='E'));
}
流程图如下:
5.源程序清单:
MyLink.h
#ifndef MYLINK_H
#define MYLINK_H
#include
#include
using namespace std;
template
public:
MyLink(string LString,MyLink
MyLink();
void display();
int findChar(char*);
void repSubChar(char*,char*);
string LiString;
MyLink* prv;
MyLink* next;
};
template
MyLink
this->prv=pr;
this->next=ne;
}
template
MyLink
this->prv=NULL;
this->next=NULL;
}
template
int MyLink
return LiString.find(fin);
}
template
void MyLink
int temp=LiString.find(old);
LiString.replace(temp,sizeof(old)-1,rep);
}
#endif
MyList.h
#ifndef LinkList_H
#define LinkList_H
#include"Link.h"
#include
using namespace std;
template
private:
MyLink
MyLink
int count;
void init(){
fence=tail=head=new MyLink
count=0;
}
void removeall(){
while (head!=NULL)