4-7 在一个数组中实现两个堆栈 (20分)
2016-08-18 10:19
330 查看
#include <stdio.h> #include <stdlib.h> #define ERROR 1e8 typedef int ElementType; typedef enum { push, pop, end } Operation; typedef enum { false, true } bool; typedef int Position; struct SNode { ElementType *Data; Position Top1, Top2; int MaxSize; }; typedef struct SNode *Stack; Stack CreateStack(int MaxSize); bool Push(Stack S, ElementType X, int Tag); ElementType Pop(Stack S, int Tag); Operation GetOp(); /* details omitted */ void PrintStack(Stack S, int Tag); /* details omitted */ int main() { int N, Tag, X; Stack S; int done = 0; scanf("%d", &N); S = CreateStack(N); while (!done) { switch (GetOp()) { case push: scanf("%d %d", &Tag, &X); if (!Push(S, X, Tag)) printf("Stack %d is Full!\n", Tag); break; case pop: scanf("%d", &Tag); X = Pop(S, Tag); if (X == ERROR) printf("Stack %d is Empty!\n", Tag); break; case end: PrintStack(S, 1); PrintStack(S, 2); done = 1; break; } } return 0; } /* 你的代码将被嵌在这里 */ Stack CreateStack(int MaxSize) { Stack S; S = (Stack)malloc(sizeof(struct SNode)); S->MaxSize = MaxSize; S->Data = (ElementType*)malloc(MaxSize*sizeof(ElementType)); S->Top1 = -1; S->Top2 = MaxSize; return S; } bool Push(Stack S, ElementType X, int Tag) { if (S == NULL) return false; if (S->Top2 - S->Top1 == 1) { printf("Stack Full\n"); return false; } if (Tag == 1) S->Data[++(S->Top1)] = X; else S->Data[--(S->Top2)] = X; return true; } ElementType Pop(Stack S, int Tag) { if (S == NULL) return ERROR; if (Tag == 1) { if (S->Top1 == -1) { printf("Stack 1 Empty\n"); return ERROR; } else return S->Data[(S->Top1)--]; } if (Tag == 2) { if (S->Top2 == S->MaxSize) { printf("Stack 2 Empty\n"); return ERROR; } else return S->Data[(S->Top2)++]; } }
相关文章推荐
- 4-7 在一个数组中实现两个堆栈 (20分)
- 4-7 在一个数组中实现两个堆栈 (20分) PTA
- 4-7 在一个数组中实现两个堆栈 (20分)
- 4-7 在一个数组中实现两个堆栈 (20分)
- PTA数据结构与算法题目集(中文)4-7 在一个数组中实现两个堆栈 (20分)
- 6-3 在一个数组中实现两个堆栈(20 分)-pta_same_无聊的水体
- 4-7 在一个数组中实现两个堆栈
- 数据结构与算法——在一个数组中实现两个堆栈(C语言)
- 一个数组实现两个堆栈的c++实现与测试
- 在一个数组中实现两个堆栈
- 在一个数组中实现两个堆栈
- 数据结构:请用一个数组实现两个堆栈,要求最大地利用数组空间,使 数组只要有空间入栈操作就可以成功
- 用一个数组实现两个堆栈,最大地使用数组的空间,只要有空间就能入栈成功
- 一个数组实现两个堆栈
- 4-7 在一个数组中实现两个堆栈
- 两个堆栈实现一个队列 , 利用两个队列实现一个堆栈(Java)
- 用一个数组实现两个栈
- 一个数组实现两个栈
- 一个数组实现两个栈
- 两个堆栈实现一个队列和一叠两个队列实现【算法导论课后题】