您的位置:首页 > 理论基础 > 数据结构算法

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

2016-08-09 10:36 176 查看


这道题的算法思想就是:利用栈只能在其一端操作的思想,通过建立栈,比较输入字符来进行入栈和出栈。

代码如下:

#include <stdio.h>

#include <malloc.h>

#include <string.h>

#define maxsize 255

typedef struct{/*栈的定义*/

    char data[maxsize];

    int top;

}Seqstack;

Seqstack *Initstack(){/*初始化栈*/

    Seqstack *s;

    s=malloc(sizeof(Seqstack));

    s->top=-1;

    return s;

}

Seqstack *Pushstack(Seqstack *s,char e){/*进栈函数*/

    if(s->top==maxsize-1)

        printf("OVERFLOW");

    s->top++;

    s->data[s->top]=e;

    return s;

}

int main(){

    char a[255];

    int n,i;

    Seqstack *s,*p;

    while(scanf("%s",a)!=EOF){

        s=Initstack();

        p=Initstack();

        n=strlen(a);

        for(i=0;i<n;i++){

            if(a[i]=='@')

                s=Initstack();

            else if(a[i]=='#'){

                if(s->top!=-1)

                    s->top--;

                else

                    continue;

            }

            else

                s=Pushstack(s,a[i]);

        }

        for(i=s->top;i>=0;i--)

            p=Pushstack(p,s->data[i]);

        for(i=p->top;i>=0;i--)

            printf("%c",p->data[i]);

        printf("\n");

    }

    return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: