做英文网站需要哪些东西,微网站建设费用,windows卸载wordpress,wordpress添加主题设置功能题目描述 一个简单的行编辑程序的功能是#xff1a;接受用户从终端输入的程序或数据#xff0c;并存入用户的数据区。 由于用户在终端上进行输入时#xff0c;不能保证不出差错#xff0c;因此#xff0c;若在编辑程序中#xff0c;“每接受一个字符即存入用户数据区”的… 题目描述
一个简单的行编辑程序的功能是接受用户从终端输入的程序或数据并存入用户的数据区。 由于用户在终端上进行输入时不能保证不出差错因此若在编辑程序中“每接受一个字符即存入用户数据区”的做法显然不是最恰当的。较好的做法是设立一个输入缓冲区用以接受用户输入的一行字符然后逐行存入用户数据区。允许用户输入出差错并在发现有误时可以及时更正。例如当用户发现刚刚键入的一个字符是错的时可补进一个退格符#以表示前一个字符无效 如果发现当前键入的行内差错较多或难以补救则可以键入一个退行符以表示当前行中的字符均无效。 如果已经在行首继续输入#符号无效。 输入
输入多行字符序列行字符总数包含退格符和退行符不大于250。 输出
按照上述说明得到的输出。 示例输入 whli##ilr#e(s#*s)
outchaputchar(*s#); 示例输出 while(*s)
putchar(*s);#include stdio.h
#include stdlib.h
#includemalloc.h
#define STACK_INIT_SIZE 100
#define STACKINCREMENT 10
#define OK 1
#define OVERFLOW -1
#define ERROR -2
typedef char SElemType;
typedef struct
{SElemType *base;//栈底指针SElemType *top;//栈顶指针int stacksize;//当前已分配的存储空间以元素为单位
}SqStack;
void InitStack(SqStack S)// 构造一个空栈S
{S.base(SElemType *)malloc(STACK_INIT_SIZE*sizeof(SElemType));if(!S.base) exit(OVERFLOW);//存储分配失败S.topS.base;S.stacksizeSTACK_INIT_SIZE;
}
void DestroyStack(SqStack S)//销毁栈
{S.topNULL;
S.stacksize0;
}
void ClearStack(SqStack S)//清空栈
{S.topS.base;
}
void Push(SqStack S,SElemType e)// 插入元素e为新的栈顶元素
{if(S.top-S.baseS.stacksize){// 当前存储空间已满增加分配S.base(SElemType *)realloc(S.base,(S.stacksizeSTACKINCREMENT)*sizeof(SElemType));if(!S.base) exit(OVERFLOW);//存储分配失败S.topS.baseS.stacksize;S.stacksizeSTACKINCREMENT;//增加存储容量}*S.tope;
}
int Pop(SqStack S,SElemType e)//若栈不空则删除S的栈顶元素并 //用e返回其值并返回OK否则返回//ERROR
{if(S.topS.base) return ERROR;e*--S.top;return OK;
}
int GetTop(SqStack S,SElemType e)//若栈不空则用e返回S的栈顶元素并//返回OK否则返回ERROR
{if(S.topS.base) return ERROR;e*(S.top-1);return OK;
}
void PutStack(SqStack S)
{while(S.topS.base){S.top--;printf(%d,*S.top);}printf(\n);
}
void LineEdit()//行编译函数
{char ch,*temp;SqStack S;//栈的定义InitStack(S);//栈的初始化chgetchar();while(ch!EOF){while(ch!EOFch!\n){switch(ch){case #:Pop(S,ch);break;//出栈操作case :ClearStack(S);break;//清空栈default :Push(S,ch);break;//进栈}chgetchar();}tempS.base;//temp指针指向base指针while(temp!S.top){printf(%c,*temp);temp;}ClearStack(S);//清空栈printf(\n);if(ch!EOF){chgetchar();}
}DestroyStack(S);//销毁栈
}
int main()
{LineEdit();return 0;
}#include iostream
#include cstring
#include cstdlib
#include cstdio
using namespace std;
#define maxsize 10000
typedef struct Stack
{int Size;char *top,*base;
} Stack;bool Empty(Stack s)
{if (s.top s.base){return 1;}return 0;
}void Creat(Stack s)//栈的初始化
{s.basenew char[maxsize];s.tops.base;s.top;s.base;s.Sizemaxsize;
}void push(Stack s,char e)
{if (s.top-s.base s.Size){s.base(char *)realloc(s.base,2*maxsize*sizeof(Stack));s.Sizemaxsize;///s.tops.bases.Size;}s.top;*s.tope;
}void pop(Stack s)
{if (s.top ! s.base){s.top--;}
}void print(Stack s)
{while (!Empty(s)){cout*s.top;pop(s);}
}void out(Stack s)//栈内元素的输出
{s.base;while(s.bases.top){cout*s.base;s.base;}coutendl;
}void Clear(Stack s)
{while (!Empty(s)){pop(s);}
}void edit(Stack s,char str[])
{int i;for(i0; str[i]; i){if (str[i] # !Empty(s)){pop(s);//出栈}else if(str[i] ){Clear(s);//清空栈}else if (str[i]!#str[i]!){push(s,str[i]);//进栈}}
}
int main()
{char str[333];while(gets(str)!NULL){Stack s;Creat(s);edit(s,str);out(s);}return 0;
}