#include<stdio.h>
#include<stdlib.h>
#include<string.h>
typedef struct {
char data[100];
int top = -1;
}Stack;
bool isEmpty(Stack s) {
if (s.top == -1) return true;
return false;
}
bool overflow(Stack s) {
if (s.top == 99) return true;
return false;
}
bool push(Stack &s, char pushElem) {
if (overflow(s)) return false;
s.data[++s.top] = pushElem;
return true;
}
bool pop(Stack &s, char &returnPopElem) {
if (isEmpty(s)) return false;
returnPopElem = s.data[s.top--];
return true;
}
void clearStack(Stack &s) {
s.top = -1;
}
void DestroyStack(Stack &s) {
free(s.data);
}
void LineEdit() {
Stack s;
char ch = getchar();
char ret;
while (ch != EOF) {
while (ch != EOF && ch != '\n') {
switch (ch) {
case '#':pop(s, ret); break;
case '@' : clearStack(s); break;
default:push(s, ch); break;
}
ch = getchar();
}
//将从栈底到栈顶的栈内字符传送至调用过程的数据区
for (int i = 0; i <= s.top; i++) {
printf("%c", s.data[i]);
}
printf("\n下一行:");
clearStack(s);
//此时ch可以是EOF或者\n
if (ch != EOF) ch = getchar();
}
printf("\n结束");
DestroyStack(s);
}
int main() {
LineEdit();
getchar();
}
5 (栈的应用)行编辑系统
最新推荐文章于 2024-11-17 20:07:12 发布
648

被折叠的 条评论
为什么被折叠?



