C语言实现顺序栈的基本运算(初始化,入栈,出栈,判栈空,读栈顶元素,打印栈里元素)
//顺序栈的基本操作 #include <stdio.h> #define MaxSize 50 typedef int Element; typedef struct { Element data[MaxSize]; int top; }SqStack; //初始化栈 void InitStack(SqStack &S){ S.top = -1; } //入栈 bool Push(SqStack &S,Element e){ if(S.top == MaxSize-1){ return false; }else{ S.data[++S.top] = e; return true; } } //出栈 bool Pop(SqStack &S,Element &e){ if(S.top == -1){ return false; }else{ e = S.data[S.top--]; return true; } } //判断栈空 bool StackEmpty(SqStack S){ if(S.top == -1){ return true; }else { return false; } } //读栈顶元素 bool GetTop(SqStack S,Element &e){ if(S.top == -1){ return false; }else{ e = S.data[S.top]; return true; } } //打印栈里元素的函数 void PrintStack(SqStack &S) { if (S.top == -1) { printf("Stack is empty.\n"); return; } Element e; int i; for (i = S.top; i >= 0; i--) { e = S.data[i]; printf("%d ", e); } printf("\n"); } int main() { SqStack s; Element e; // 初始化栈 InitStack(s); // 入栈测试 Push(s, 10); Push(s, 20); Push(s, 30); Push(s, 40); Push(s, 50); // 出栈测试 Pop(s, e); printf("Pop: %d\n", e); Pop(s, e); printf("Pop: %d\n", e); // 获取栈顶元素测试 GetTop(s, e); printf("Top: %d\n", e); // 打印栈中所有元素 printf("Stack: "); PrintStack(s); // 判断栈是否为空 if (StackEmpty(s)) { printf("Stack is empty.\n"); } else { printf("Stack is not empty.\n"); } return 0; }