行编辑程序(数据结构之栈一)
来源:互联网 发布:windows程序设计第七版 编辑:程序博客网 时间:2024/06/06 17:33
描述
如果遇到‘#’,表示后退一格,即前一字符无效,如果遇到@,表示前一单词无效,即退出到空格或所在行头为止。采用栈实现。
输入
输入包含若干行,由各种字符构成。
输出
利用描述规则输出最后的文本内容。
样例输入
whli##ilr#e(s# *s)
outcha@putchar( *s =# ++)
outcha@putchar( *s =# ++)
样例输出
while( *s)
putchar( *s ++)
putchar( *s ++)
#include<iostream>#include<stdio.h>#include<stdlib.h>#define MI 10#define MX 100using namespace std;typedef struct{ char *base; char *top; int stacklist;}sqstack;int initstack(sqstack &s){ s.base=(char *)malloc(MI*sizeof(char)); s.top=s.base; s.stacklist=MI; return 1;}int push(sqstack &s,char e){ if(s.top-s.base==s.stacklist) { s.base=(char *)realloc(s.base,(s.stacklist+MX)*sizeof(char)); s.top=s.base+s.stacklist; s.stacklist+=MX; } *s.top++=e; return 1;}int pop(sqstack &s){ if(s.top==s.base)return 0; *--s.top; return 1;}int bespop(sqstack &s){ // if(s.top==s.base)return 0; while(*s.top!=' '&&s.top>=s.base)s.top--; s.top++; return 1;}int main(){ char c; sqstack s; while((c=getchar())!=EOF) { initstack(s); if(c=='#')pop(s); else if(c=='&')bespop(s); else push(s,c); while((c=getchar())!='\n') { if(c=='#')pop(s); else if(c=='@')bespop(s); else push(s,c); } for(s.base;s.base!=s.top;s.base++) cout<<*s.base; cout<<endl; } return 0;}
- 行编辑程序(数据结构之栈一)
- 【数据结构】栈的应用--行编辑程序(c++)
- 数据结构 栈 行编辑程序(可执行代码)
- 学习笔记------数据结构(C语言版)栈应用 行编辑程序
- C语言数据结构——栈、行编辑程序
- 数据结构 P50 算法实现 栈的应用-行编辑程序
- 栈的应用之行编辑程序
- 栈的应用之-----行编辑程序
- 栈的应用之行编辑程序
- 栈的应用之行编辑程序
- 数据结构题典022:栈的应用——行编辑程序(C语言版)
- 数据结构(C语言)读书笔记7:栈:行编辑程序C代码
- 数据结构(8)--栈的应用之行编辑程序、括号匹配检验、数制转换、hanio塔问题
- 数据结构之栈(一)
- 数据结构---C语言数据结构3.2.3行编辑程序
- 考研数据结构与算法之利用堆栈实现行编辑程序
- 栈&&行编辑程序
- 栈 行编辑程序
- 贱贱的美团安卓客户端
- Effective Java (并发)
- Linux权限漏洞及其解决
- oracle数据库的监听配置文件
- 如何构建无刷新的框架
- 行编辑程序(数据结构之栈一)
- svd及推荐算法的实现
- MVC模式已死?何不试试MOVE
- Computational Geometry Template_Convex Hull
- 图算法及其应用
- 简单描述Android wait() sleep()区别
- uva 11218 KTV(DFS)
- 工作感悟随笔
- Linux文件命名规则和命令格式