#include <iostream>
#include <malloc.h>
using namespace std;
#define maxSize 100
typedef struct {
char c[maxSize];
int top;
}sqStack;
//初始化栈
void initStack(sqStack*& s) {
s = (sqStack*)malloc(sizeof(sqStack));
s->top = -1;
}
//销毁栈
void destroyStack(sqStack*& s) {
free(s);
}
//判断栈是否为空
bool emptyStack(sqStack* s) {
if (s->top == -1)
{
return true;
}
else {
return false;
}
}
//进栈函数
bool PushStack(sqStack*& s, char c) {
//首先判断是否栈满
if (s->top == maxSize - 1)
{
return false;
}
else
{
//进栈
s->top++;
s->c[s->top] = c;
return true;
}
}
//出栈函数
bool PopStack(sqStack*& s, char& e) {
//判断栈是否为空
if (s->top == -1)
{
return false;
}
else {
e = s->c[s->top];
s->top--;
return true;
}
}
//取栈顶元素
bool getTop(sqStack*& s, char& e) {
//判断栈是否为空
if (s->top == -1)
{
return false;
}
else
{
e = s->c[s->top];
return true;
}
}
int main() {
sqStack* sta = NULL;
char c = '\0';
initStack(sta);
cout << (emptyStack(sta) ? "空" : "非空") << endl;
cout << "将a,b,c,d,e按顺序依次进栈" << endl;
PushStack(sta, 'a');
PushStack(sta, 'b');
PushStack(sta, 'c');
PushStack(sta, 'd');
PushStack(sta, 'e');
cout << (emptyStack(sta) ? "空" : "非空") << endl;
while (!emptyStack(sta))
{
PopStack(sta, c);
cout << c << endl;
}
cout << (emptyStack(sta) ? "空" : "非空") << endl;
destroyStack(sta);
return 0;
}
c顺序栈
于 2023-05-19 20:20:34 首次发布