行编辑程序2则

行编辑程序2则

ID:39397817

大小:39.51 KB

页数:28页

时间:2019-07-02

行编辑程序2则_第1页
行编辑程序2则_第2页
行编辑程序2则_第3页
行编辑程序2则_第4页
行编辑程序2则_第5页
资源描述:

《行编辑程序2则》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、行编辑程序2则以下是网友分享的关于行编辑程序的资料2篇,希望对您有所帮助,就爱阅读感谢您的支持。《行编辑程序范文一》行编辑程序描述利用栈编写简单的行编辑程序:接受用户从终端输入的程序或数据,在输入过程中,允许用户输入出差错,并在发现有误时可以及时更正。例如:当用户发现刚刚键入的一个字符是错的时,可以补进一个退格符“#”,以表示前一个字符无效;如果发现当前键入的行内差错较多或难以补救,则可以键入一个退行符“@”,以表示当前行中的字符均无效。例如:假设从终端接受了这样两行字符:whli##ilr#e(s#*s)outcha@putchar(*s=#++);则实际有效的是下列两行:

2、while(*s)28putchar(*s++);Input第一行:第一个字符为输入文本的行数n;第二行至第n行:每行均为一串字符,其间可以含有“#”和“@”符号,以回车键结束本行的输入;Output输出第一至第n行的内容如下:第一行:第一行从终端输入的有效字符。第二行:第二行从终端输入的有效字符。…………第n行:第n行从终端输入的有效字符。typedefcharSElemType;#include”malloc.h”#include”stdio.h”#include”math.h”#include”process.h”//exit()#defineOK1#defineERR

3、OR0#defineTRUE1#defineFALSE280typedefintStatus;//Status是函数的类型,其值是函数结果状态代码,如OK等#defineSTACK_INIT_SIZE10//存储空间初始分配量#defineSTACKINCREMENT2//存储空间分配增量structSqStack{SElemType*base;//在栈构造之前和销毁之后,base的值为NULLSElemType*top;//栈顶指针intstacksize;//当前已分配的存储空间,以元素为单位};//顺序栈StatusInitStack(SqStack&S){//构造一个

4、空栈SS.base=(SElemType*)malloc(STACK_INIT_SIZE*sizeof(SElemType));if(!S.base)returnERROR;S.top=S.base;S.stacksize=STACK_INIT_SIZE;returnOK;}StatusStackEmpty(SqStack28S){if(S.base==S.top)returnTRUE;elsereturnFALSE;//若栈S为空栈,则返回TRUE,否则返回}StatusClearStack(SqStack&S){//把S置为空栈S.top=S.base;returnOK;

5、}StatusDestroyStack(SqStack&S){//销毁栈S,S不再存在free(S.base);S.base=NULL;S.top=NULL;FALSES.stacksize=0;returnOK;}StatusPush(SqStack&S,SElemTypee){//插入元素e为新的栈顶元素if(S.top-S.base>=S.stacksize)28{S.base=(SElemType*)realloc(S.base,(STACK_INIT_SIZE+S.stacksize)*sizeof(SElemType));if(!S.base)returnERRO

6、R;S.top=S.base+S.stacksize;S.stacksize=S.stacksize+STACK_INIT_SIZE;}*S.top=e;S.top++;returnOK;}StatusPop(SqStack&S,SElemType&e){//若栈不空,则删除S的栈顶元素,用e返回其值,并返回OK;否则返回ERRORif(S.base==S.top)returnERROR;e=*--S.top;returnOK;}StatusStackTraverse(SqStackS,Status(*visit)(SElemType)){//从栈底到栈顶依次对栈中每个元素调

7、用函数visit()。//28一旦visit()失败,则操作失败while(S.top>S.base)visit(*S.base++);printf(“”);returnOK;}Statusvisit(SElemTypec){printf(“%c”,c);returnOK;}voidLineEdit(){//利用字符栈s,从终端接收一行并送至调用过程的数据区。SqStacks;charch,c;intn,i;InitStack(s);scanf(“%d”,&n);ch=getchar();for(i

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。