用栈实现一维消消乐(c语言写法)
- 题目:输入一串字符,消去两个相邻的字符对。
- 思路:利用栈先进后出的特点,先写好栈的各个函数如初始化栈,进栈,出栈,读栈顶元素。在每次入栈之前,将当前元素与栈顶元素进行比较,如果相同则消除,不同则入栈,直到输入结束。然后用第二个栈对输出顺序进行逆序,使输出满足要求。
- 代码:
#include <stdio.h>
#define maxsize 30
#define elemtype char
#define bool int
#define false 0
#define true 1
typedef struct {
char data[maxsize];
int top;
}sqstack;
//初始化栈
void initStack(sqstack *s){
s->top = -1;
}
//判断栈空 如果stack是空的 则返回true 否则返回 false
bool empty_stack(sqstack s){
if(s.top == -1){
return true;
}else{