1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78
| #include<stdio.h> #define MaxSize 10 typedef struct { int data[MaxSize]; int top; } SqStack; void InitStack(SqStack &S); bool StackEmpty(SqStack S); bool Push(SqStack &S, int x); bool Pop(SqStack &S, int &x); int GetTop(SqStack S, int &x); int main(void) { SqStack S; int x, top; InitStack(S); Push(S, 1); Push(S, 2); Push(S, 3); Push(S, 4); Push(S, 5); Push(S, 6); Push(S, 7); Pop(S,x); Pop(S,x); Pop(S,x); Pop(S,x); printf("x = %d\n", x); top = GetTop(S, x); printf("top = %d\n", top); if (!StackEmpty(S)) { Push(S, 8); printf("x = %d\n", x); } return 0; }
void InitStack(SqStack &S) { S.top = -1; }
bool StackEmpty(SqStack S) { if (S.top == -1) { return true; } else { return false; } }
bool Push(SqStack &S, int x) { if (S.top == MaxSize - 1) { return false; } S.top = S.top + 1; S.data[S.top] = x; return true; }
bool Pop(SqStack &S, int &x) { if (S.top == -1) { return false; } x = S.data[S.top]; S.top = S.top - 1; return true; }
int GetTop(SqStack S, int &x) { if (S.top == -1) { return false; } x = S.data[S.top]; return x; }
|