1479数据结构实验之栈:行编辑器

来源:互联网 发布:mysql thread conn 编辑:程序博客网 时间:2024/06/03 17:47

数据结构实验之栈:行编辑器

#include<cstdio>#include<cstdlib>#include<iostream>#include<cstring>#define stackmax 100000#define stacknum 100000int x;typedef int  Elemtype;typedef struct{    Elemtype *top;    Elemtype  *base;    int stacksize;} qstack;int Initstack(qstack &s){    s.base=(Elemtype*)malloc(stackmax*sizeof(Elemtype));    if(!s.base)        exit(0);    s.top=s.base;    s.stacksize= stackmax;    return 0;}int Pushstack(qstack &s,int n){    if(s.top-s.base>=s.stacksize)    {        s.base=(Elemtype *)realloc(s.base,(s.stacksize+stacknum)*sizeof(Elemtype));        if(!s.base)            exit(0);        s.top=s.base+s.stacksize;        s.stacksize+=stacknum;    }    *(++s.top)=n;    return 0;}/*int empty(qstack &s){    if(s.base == s.top)        return 1;    else        return 0;}*/void clean(qstack &s){    while(s.top != s.base)        s.top--;}int change(qstack &s,int n,char a[]){    int i;    char t;   for(i=0;i<n;i++)    {        if(s.top!=s.base&& a[i] == '#')         s.top-- ;         else if(a[i]=='@')             clean(s);        else Pushstack(s,a[i]);    }    return 0;}int Putstack(qstack &s){   while(s.top>s.base)      {          s.base++;          if(*(s.base)!='#')          printf("%c",*s.base);      }      printf("\n");    return 0;}int main(){    char a[60];    qstack s;    int n,r;    while(gets(a))    {        x=1;        Initstack(s);        n=strlen(a);        change(s,n,a);        Putstack(s);    }    return 0;}
0 0
原创粉丝点击