4-7 在一个数组中实现两个堆栈 (20分)
来源:互联网 发布:ubuntu terminal替换 编辑:程序博客网 时间:2024/05/17 03:25
#include <stdio.h>#include <stdlib.h>#define ERROR 1e8typedef 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;elseS->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;}elsereturn S->Data[(S->Top1)--];}if (Tag == 2) {if (S->Top2 == S->MaxSize) {printf("Stack 2 Empty\n");return ERROR;}elsereturn S->Data[(S->Top2)++];}}
1 0
- 4-7 在一个数组中实现两个堆栈 (20分)
- 4-7 在一个数组中实现两个堆栈 (20分)
- 4-7 在一个数组中实现两个堆栈 (20分)
- 4-7 在一个数组中实现两个堆栈 (20分)
- 4-7 在一个数组中实现两个堆栈 (20分) PTA
- PTA数据结构与算法题目集(中文)4-7 在一个数组中实现两个堆栈 (20分)
- 4-7 在一个数组中实现两个堆栈
- 6-3 在一个数组中实现两个堆栈(20 分)-pta_same_无聊的水体
- 在一个数组中实现两个堆栈
- 在一个数组中实现两个堆栈
- 一个数组实现两个堆栈
- 数据结构与算法——在一个数组中实现两个堆栈(C语言)
- 两个数组实现堆栈
- 怎么用两个堆栈实现一个队列?
- 每日一题16:在一个数组中实现两个栈
- 两个堆栈实现一个队列 , 利用两个队列实现一个堆栈(Java)
- 用一个数组实现两个堆栈,最大地使用数组的空间,只要有空间就能入栈成功
- 在一个数组中找到最大的两个数
- HashMap的工作原理-hashcode和equals原理的再次深入
- $.ajax()方法详解
- highcharts小技巧
- WebApp <meta>函数
- 对自己别手软
- 4-7 在一个数组中实现两个堆栈 (20分)
- Struts框架面试题
- <转载>Spring 3.x 升级到Spring 4.x 注意事项和步骤,错误解决方法
- Set接口的实现类
- OpenSceneGraph实现的NeHe OpenGL教程 - 第四十八课
- iPhone开发:UIView的clipsToBounds属性 ===某些时候能够起到一定的作用
- Oracle expdp/impdp导出导入命令及数据库备份
- zzuli 1919
- J1939协议与CAN2.0对应关系图表