手工栈的简单实现是借用数组完成,可以实现入栈出栈,检查栈是否为空等操作,实现的栈具有先进后出的特性。
typedef struct Stack
{
char data[1001]; //用来存放记录在栈中的数据
int top; //栈顶指针
int base; //栈底指针
}Stack;
Stack s;
其中栈顶栈底指针记录的是数组的下标,栈顶指针指向数组顶元素的下一个位置。
void s_init(Stack *s) //栈初始化
{
s->top=0;
s->base=0;
}
void s_push(Stack *s, char c) //元素c入栈
{
s->data[s->top++]=c;
}
void s_pop(Stack *s, char *e) //弹出栈顶元素,栈顶元素出栈,并且通过指针e来返回该元素的值
{
(*e)=s->data[--s->top]
}
int s_num(Stack *s) //返回栈的大小
{
return s->top-s->base;
}
bool s_empty(Stack *s) //检查栈是否为空
{
if(s->top==0)
return true;
else
return false;
}
问题 1681: 算法3-2:行编辑程序
时间限制: 1Sec 内存限制: 32MB 提交: 27 解决: 14
题目描述
一个简单的行编辑程序的功能是:接收用户从终端输入的程序或数据,并存入用