数据结构第二次实验报告

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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;

templateclass MyLink{

public:

MyLink(string LString,MyLink*prv,MyLink*);

MyLink();

void display();

int findChar(char*);

void repSubChar(char*,char*);

string LiString;

MyLink* prv;

MyLink* next;

};

template

MyLink::MyLink(string LString,MyLink*pr,MyLink*ne){ this->LiString=LString;

this->prv=pr;

this->next=ne;

}

template

MyLink::MyLink(){

this->prv=NULL;

this->next=NULL;

}

template

int MyLink::findChar(char* fin){

return LiString.find(fin);

}

template

void MyLink::repSubChar(char* old,char* rep){

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 class MyList{

private:

MyLink*head;

MyLink*tail;

int count;

void init(){

fence=tail=head=new MyLink;

count=0;

}

void removeall(){

while (head!=NULL)

相关文档
最新文档