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
| #include <stdlib.h> #include <stdio.h> #include <stdbool.h>
typedef int ElementType; typedef int Position; typedef struct SNode *PtrToSNode; struct SNode{ ElementType *Data; Position Top; int MaxSize; }; typedef PtrToSNode Stack;
Stack CreateStack(int MaxSize){ Stack stack; stack = (Stack)malloc(sizeof(struct SNode)); stack->MaxSize = MaxSize; stack->Top = -1; stack->Data = (ElementType *)malloc(sizeof(ElementType) * MaxSize); return stack; }
bool isFull(Stack stack){ bool result = stack->Top == stack->MaxSize -1; return result; }
bool isEmpty(Stack stack) { return stack->Top == -1; }
void Push(Stack stack, ElementType item){ if (stack == NULL) { return; } if(stack->Top == stack->MaxSize -1){ printf("stack is full"); return; } stack->Data[++(stack->Top)] = item; }
ElementType Pop(Stack stack) { if (stack == NULL) { return -1; } if (stack->Top == -1) { return -1; } return stack->Data[(stack->Top)--]; }
|