//顺序栈
#define MaxSize 500
#include<stdio.h>
#include<stdlib.h>
typedef int ElemType;
typedef struct
{
ElemType data[MaxSize];
int top;
}SqStack;
void InitStack(SqStack*& s)//初始化栈
{
s = (SqStack*)malloc(sizeof(SqStack));
s->top = -1;
}
void DestroyStack(SqStack*& s)//销毁栈
{
free(s);
}
bool StackEmpty(SqStack*& s)//判断栈是否为空
{
return (s->top == -1);
}
bool Push(SqStack*& s, ElemType e)//进栈
{
if (s->top == MaxSize - 1)
{
return false;
}
s->top++;
s->data[s->top] = e;
return true;
}
bool Pop(SqStack*& s, ElemType& e)//出栈
{
if (s->top == -1)
return false;
e = s->data[s->top];
s->top--;
return true;
}
bool GetTop(SqStack*& s, ElemType& e)//取栈顶
{
if (s->top == -1)return false;
e = s->data[s->top];
return true;
}
int main()
{
SqStack* s;
ElemType e;
InitStack(s);
StackEmpty(s);
e = 666;
Push(s, e);
e = 123;
Push(s, e);
GetTop(s, e);
Pop(s, e);
DestroyStack(s);
return 0;
}
/*
c++中 *& + 变量名 使函数中的指针变量能够传回主函数
*/
栈(顺序栈)
于 2023-08-19 11:28:03 首次发布