sdut 数据结构实验之栈:行编辑器
来源:互联网 发布:何以知之的以 编辑:程序博客网 时间:2024/05/22 11:42
Problem Description
Input
Output
Example Input
whli##ilr#e(s#*s)outcha@putchar(*s=#++);
Example Output
while(*s)putchar(*s++);
Hint
Author
cz
代码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define INIT_STACK_SIZE 100000
#define stackincrement 1000
typedef int element;
typedef struct
{
element *base,*top;
int stacksize;
} Sqstack;
int Initstack(Sqstack *s)
{
s->base=(element *)malloc(INIT_STACK_SIZE*sizeof(element));
if(!s->base) return -1;
s->top=s->base;
s->stacksize=INIT_STACK_SIZE;
return 0;
}
int Clearstack(Sqstack *s) //清空栈
{
s->top=s->base;
return 0;
}
int Pushstack(Sqstack *s,char n)
{
if(s->top-s->base>=s->stacksize)
{
s->base=(element *)realloc(s->base,(INIT_STACK_SIZE+stackincrement)*sizeof(element));
if(!s->base) return -1;
s->top=s->base+s->stacksize;
s->stacksize+=stackincrement;
}
*(s->top++)=n;
return 0;
}
int Popstack(Sqstack *s)
{
if(s->top==s->base)
return -1;
--s->top;
return 0;
}
void intput(Sqstack *s)
{
char ch[260];
int i;
while(scanf("%s",ch)!=EOF)
{
for(i=0; i<strlen(ch); i++)
{
if(ch[i]=='#') //当字符为‘#’时,栈顶元素退栈
{
Popstack(s);
}
else if(ch[i]=='@') //当字符为‘@’时,清空栈
{
Clearstack(s);
}
else
{
Pushstack(s,ch[i]); //当字符为字母时,进栈
}
}
while(s->base!=s->top) //从栈底开始输出元素,直到栈底等于栈顶
{
printf("%c",*(s->base++));
}
printf("\n");
Clearstack(s); //输入下一个字符串时,清空栈
}
}
int main()
{
Sqstack s;
Initstack(&s);
intput(&s);
return 0;
}
- SDUT-数据结构实验之栈:行编辑器
- sdut 数据结构实验之栈:行编辑器
- [1479]数据结构实验之栈:行编辑器(栈) SDUT
- SDUT OJ 数据结构实验之栈:行编辑器
- SDUT 1479 数据结构实验之栈:行编辑器
- SDUT 1479 数据结构实验之栈:行编辑器
- sdut oj1479 数据结构实验之栈:行编辑器
- sdut 1479 数据结构实验之栈与队列九:行编辑器
- 数据结构实验之栈:行编辑器(栈)
- 数据结构实验之栈:行编辑器
- 数据结构实验之栈:行编辑器
- 数据结构实验之栈:行编辑器
- 数据结构实验之栈:行编辑器
- 数据结构实验之栈:行编辑器
- 数据结构实验之栈:行编辑器
- 数据结构实验之栈:行编辑器
- SDUT1479数据结构实验之栈:行编辑器
- 数据结构实验之栈:行编辑器
- ZooKeeper集群安装后无法启动ZooKeeper JMX enabled by default
- XtraBackup应用说明(支持TokuDB)
- Hbase的TTL字段超时设置测试
- 设计模式之禅笔记--面向对象设计六大原则之五
- 专题六-最小生成树
- sdut 数据结构实验之栈:行编辑器
- 学习SpringMVC——数据绑定和类型转换
- 孤儿进程,僵尸进程,守护进程的剖析
- 使用css动画样式库
- 字符串问题---找到被指的新类型字符
- 8月23日训练笔记
- Linux使用sed对文档进行增、删、改、查
- Oracle学习笔记 -- day04 单行函数字符、单行函数转换、多行函数
- 线段树板子