|
#include<stdio.h> #include<stdlib.h>
#define STACKSIZE 50
typedef char DataType;
typedef struct { DataType st[STACKSIZE]; int top; }Stack;
void InitStack(Stack *s) //初始化棧 { s->top = -1; } int EmptyStack(Stack *s) //判斷棧空否,空返回1 { return (s->top == -1 ? 1:0 ); } int Push(Stack *s,DataType x) //進(jìn)棧操作 { if(s->top == STACKSIZE-1) return 0; s->top++; s->st[s->top] = x; return 1; } int Pop(Stack *s,DataType *x) //出棧操作,將s的棧頂元素彈出,放到x所指存儲(chǔ)空間 { if(EmptyStack(s)) return 0; else { *x = s->st[s->top]; s->top--; return 1; } } int GetTop(Stack *s,DataType *x) //取棧頂元素,將棧s的棧頂元素彈出,放到x所指的存儲(chǔ)空間,但棧頂指針保持不變 { if(EmptyStack(s)) return 0; else { *x = s->st[s->top]; return 1; } } int StackLength(Stack *s,int *l) //求棧s的長(zhǎng)度 { *l = s->top + 1; return 1; }
|