#include <stdio.h>
#include <stdlib.h>
#define MAXSIZE 215
typedef struct stankl{
  char* top;
  char* base;
int stacksize;
} stackl,*linkstack;
linkstack Initstack(){
    stackl *l=NULL;
  l->base=(char*)malloc(100* sizeof(char));
  if(!l->base) exit(-1);
  l->top=l->base;
  *(l->top)=0;
  l->stacksize=0;
  return l;
}//对顺序栈进行初始化
void push(linkstack l,char ch){
    if(l->stacksize==MAXSIZE) {
        printf("空间已经满了!\n");
            exit(-1);}
    *l->top=ch;
    l->top++;
    l->stacksize++;
}//入栈操作
void pop(linkstack l){
  if(l->top!=l->base){
  l->top--;
  *(l->top)=0;
  l->stacksize--;
  }
}//出栈操作
void allpop(linkstack l){
    while(l->top>l->base){
        pop(l);
    }
    if(l->top==l->base)*l->top=0;
}//全部出栈
void  lineEdit(linkstack l){
   char ch;
   ch=getchar();
   while(ch!=EOF){
    while(ch!=EOF&&ch!='\n'){
       switch(ch){
       case '#':pop(l);
            break;
        case '@':allpop(l);
            break;
        default:push(l,ch);
            break;
       }
       ch=getchar();
    }
   }
}//编辑输入
void ptf(linkstack l){
  if((l->top==l->base)&&(*(l->top)==0))printf("你未输入或是您将输入的全部删掉了!");
  else{
        char k;
    while(l->top>l->base){
        k=*(l->top--);
        printf("%c\n",k);
    }
  if(l->top==l->base){
    k=*(l->top);
    printf("%c\n",k);
  }
  }
}//输出所输入的内容
int main()
{
    char a,b;
    a='#';
    b='@';
    printf("请输入字符,%c作为回删键,%c作为全删键\n",a,b);
    stackl*l;
    l=Initstack();
    lineEdit(l);
    ptf(l);
    printf("Hello world!\n");
    return 0;
}