资源描述:
《数据结构行编辑程序报告.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、计算机系上机实验报告计算机系上机实验报告实验项目名称行编辑所属课程名称数据结构实验类型综合型实验班级完整学号姓名成绩计算机系上机实验报告实验概述:【实验目的】1.练习ADT数据类型的描述并写出栈的逻辑结构表示2.掌握栈的特点并实现栈的存储表示3.用栈解决行编辑的问题【实验环境】(使用的软件)VisualC++6.0控制台编程环境实验内容(不够附页):【实验方案设计与实验过程】(分析、设计、实验步骤、测试数据、实验结果)一.分析一个简单的行编辑程序的功能是:接受用户从终端输入的程序或数据,并存入用户的数据
2、区。由于输入过程中不保证不出差错,因此较好的做法是,设立一个输入缓冲区,用以接受用户输入的一行字符,,然后逐行存入用户数据区。允许用户输入出差错,并在发现有失误时可以及时更正。例如,当用户发现刚刚键入的一个字符是错的时,可补进一个退格符“#”,以表示前一个字符无效;如果发现当前键入的行内差错较多或难以补救,则可以键入一个退行符“@”,以表示当前行中的字符均无效。二.设计用栈编辑一个输入缓冲区1.用“#”符号删除前一个错误的字符,用Pop退出栈顶元素已删除最后一个错误元素。2.用“@”符号删除前面一行元素
3、,循环使用判断前是否还有元素,如有用Pop删除。直至判断栈空为止。实现退行功能。此程序很恰当的运用了栈后进先出的特点,将栈定义,在算法中直接调用,帮助实现“#”符号的退格功能和“@”符号的退行功能。三、实验步骤1.先定义本实验中用到的栈的ADT表示为:ADTStack{数据对象:D={ai
4、ai为字符,i=1,2,…n,n>=0}数据关系:R={
5、ai-1,ai∈D,i=2,…,n}基本操作:InitStack(&S)构造一个空栈DestroyStack(&S)销毁栈Push(&S,e
6、)元素e入栈Pop(&S,e)栈顶元素出栈,用e返回其值ClearStack(&S);栈的清空StackLength(S);栈的长度GetTop(S,&e);取栈顶元素StackEmpty(S)判断栈是否为空2.栈表示:计算机系上机实验报告#defineSTACK_INIT_SIZE100#defineOVERFLOW0#defineOK1;#defineERROR0;typedefintStatus;typedefcharSElemType;typedefstructSqStack{//栈定义SEle
7、mType*base;SElemType*top;intstacksize;DestoryStack(SqStack&S);ClearStack(SqStack&S);}SqStack;StatusInitStack(SqStack&S);voidDestoryStack(SqStack&S);voidClearStack(SqStack&S);//栈的清空intStackLength(SqStackS);StatusGetTop(SqStackS,SElemType&e);StatusStackEmp
8、ty(SqStackS);StatusPush(SqStack&S,SElemTypee);StatusPop(SqStack&S,SElemType&e);2.基本算法操作描述#include#include#include"myr.h"StatusInitStack(SqStack&S){//初始化栈S.base=(SElemType*)malloc(STACK_INIT_SIZE*sizeof(SElemType));//申请空间if(!S.base)exit
9、(OVERFLOW);S.top=S.base;//初始状态S.stacksize=STACK_INIT_SIZE;returnOK;}//InitStackvoidDestoryStack(SqStack&S){//栈的销毁free(S.base);S.stacksize=0;}voidClearStack(SqStack&S)//栈的清空计算机系上机实验报告{S.stacksize=0;}StatusStackEmpty(SqStackS)//判断栈是否为空{if(S.top==S.base)ret
10、urn1;elsereturn0;}intStackLength(SqStackS){//栈的长度求栈里有多少个元素returnS.top-S.base;}StatusGetTop(SqStackS,SElemType&e){//取栈顶元素if(S.top==S.base)returnERROR;e=*(S.top-1);returnOK;}//GetTopStatusPush(SqStack&S,SElemTypee){//入栈将e放入栈