利用栈的基本操作编写一个行编辑程序,当前一个字符有误时,输入#消除,当前面一行有误时,输入@消除前面行的字符序列
来源:互联网 发布:10型军用巧克力淘宝 编辑:程序博客网 时间:2024/05/01 13:45
#include <stdio.h> #include <stdlib.h> #include <malloc.h> #define STACKSIZE 100 typedef char ElemType; typedef struct { ElemType stack[STACKSIZE]; int top; }SeqStack; void InitStack(SeqStack *S);//初始化栈 int StackEmpty(SeqStack S);//判断栈是否为空 int GetTop(SeqStack S,ElemType *e);//取栈顶元素 int PushStack(SeqStack *S,ElemType e);//入栈 int PopStack(SeqStack *S,ElemType *e);//出栈 int StackLength(SeqStack S);//求栈长度 void ClearStack(SeqStack *S);//清空栈 void LineEdit();//行编辑函数 #include "行编辑.h" void InitStack(SeqStack *S)//将栈S初始化为空栈 { S->top = 0; } int StackEmpty(SeqStack S)//判断栈是否为空,栈为空返回1,否则返回0 { if(0 == S.top) { return 1; } else { return 0; } } int GetTop(SeqStack S,ElemType *e)//取栈顶元素,将栈顶元素值返回给e,并返回1表示成功,返回0表示失败 { if(S.top <= 0) { printf("栈已经空!\n"); return 0; } else { *e = S.stack[S.top-1];//取栈顶元素 return 1; } } int PushStack(SeqStack *S,ElemType e)//进栈操作 //将元素e进栈,元素进栈成功返回1,否则返回0 { if(S->top >= STACKSIZE-1) { printf("栈已满,不能入栈!"); return 0; } else { S->stack[S->top] = e; S->top++; return 1; } } int PopStack(SeqStack *S,ElemType *e)//出栈操作 { if(S->top <= 0) { printf("栈已经没有元素,不能出栈!\n"); return 0; } else { S->top--; *e = S->stack[S->top]; return 1; } } int StackLength(SeqStack S)//返回栈长度 { return S.top; } void ClearStack(SeqStack *S)//清空栈 { S->top = 0; } void LineEdit()//行编辑函数 { SeqStack S; char ch; ElemType e; ElemType a[50]; int i,j = 0; InitStack(&S); printf("输入字符序列(#表示前一个字符无效,@表示当前行字符无效).\n"); ch = getchar(); while(ch != '\n') { switch(ch) { case '#': if(!StackEmpty(S)) { PopStack(&S,&ch);//栈顶元素出栈 } break; case '@': ClearStack(&S);//清空栈 break; default: PushStack(&S,ch);//字符进栈 } ch = getchar();//读入下一个字符 } while(!StackEmpty(S)) { PopStack(&S,&e);//字符出栈并存入数组中 a[j++] = e; } for(i = j-1;i >= 0;i--) { printf("%c",a[i]);//输出正确的字符序列 } printf("\n"); ClearStack(&S);//为下一次输入做准备 }#include "行编辑.h" int main(void) { LineEdit(); return 0; }
0 0
- 试利用栈的基本操作编写一个行编辑程序,当前一个字符有误时,输入#消除,当前面一行有误时,输入@消除前面行的字符序列
- 利用栈的基本操作编写一个行编辑程序,当前一个字符有误时,输入#消除,当前面一行有误时,输入@消除前面行的字符序列
- 练习1-17 编写一个程序,打印长度大于80个字符的所有输入行。
- 编写一个程序,输入一行字符,以回车结束,分别统计出其中的英文字母、空格、数字和其他字符的数
- 一个字符输入的问题
- C语言程序设计习题1-17 编写一个程序,打印长度大于80个字符的所有输入行
- 华为:输入一个字符串,删除重复前面的字符,其余字符按原样顺序输出
- 消除字符数组的字符
- 编写一个程序,打印输入中各个字符出现的频度的直方图
- 练习1-14 编写一个程序,打印输入中各个字符出现频度的直方图
- 编写一个程序,打印输入中各个字符出现频度的直方图
- 练习 1-14 编写一个程序,打印输入中各个字符出现频度的直方图
- C#使用String.Format()方法时,出现异常"输入的字符串格式有误"的解决方法
- 【C语言】编写一个程序统计输入字符串中: 各个数字、空白字符、以及其他所有字符出现的次数。
- C语言:编写一个程序统计输入字符串中,各个数字、空白字符、以及其他所有字符出现的次数。
- 编写一个程序统计输入字符串中: 各个数字、空白字符、以及其他所有字符出现的次数
- PHP:用date函数获取当前时间有误的疑问
- 编写一个程序,一行行地读取输入行,直到到大文件尾。算出每行输入行的长度,然后把最长的行打印出来。假定所有的输入行均不超过1000个字符。
- cell的高度随点击变化
- yum的原理及配置
- [Practical.Vim(2012.9)].Drew.Neil.Tip09学习摘要
- 解压cpio.gz文件
- Centos克隆没有eth0以及修改系统语言为中文
- 利用栈的基本操作编写一个行编辑程序,当前一个字符有误时,输入#消除,当前面一行有误时,输入@消除前面行的字符序列
- Auto DOP and Parallel Statement Queuing
- Java数据结构-HashMap(八)
- Linux下的压缩解压命令
- HDU ACM 4349 Xiao Ming's Hope ->lucas定理的推到
- C++ 运算符重载
- Linux常用命令大全
- 2014年5月TOJ月赛
- WireShark 过滤语法