栈中的初始化和进栈操作
c
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#define MaxSize 10 //栈中元素的最大个数
typedef struct {
int data[MaxSize]; //静态数组存放栈中元素
int top; //栈顶指针
}SqStack; //Sequence - 顺序
//初始化栈
void InitStack(SqStack& S) {
S.top = -1; //初始化栈顶指针
}
//判断栈空
bool StackEmpty(SqStack S) {
if (S.top == -1)
{
printf("Now the Stack is empty!\n");
return true;
}
else
{
return false;
}
}
//进栈操作
bool Push(SqStack& S, int x) {
if (S.top == MaxSize - 1)
return false;
S.top += 1; //等价于
S.data[S.top] = x;//S.data[++S.top] = x;
return true;
}
//出栈操作
bool Pop(SqStack& S, int &x) {
if (S.top == -1)
return false;
x = S.data[S.top--];
return true;
}
void testStack() {
SqStack S;//声明一个顺序栈(分配空间)
InitStack(S);
StackEmpty(S);
Push(S, 3);
printf("SqStack: %d\n", S.data[0]);
Push(S, 5);
printf("SqStack: %d %d\n", S.data[0], S.data[1]);
Push(S, 7);
printf("SqStack: ");
for (int i = 0; i <= S.top; ++i)
{
printf("%d ", S.data[i]);
}
printf("\n----------------");
}
int main() {
testStack();
return 0;
}
