博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C语言实现两栈空间共享
阅读量:5224 次
发布时间:2019-06-14

本文共 2674 字,大约阅读时间需要 8 分钟。

一个同学让我改一段两栈共享的C语言代码,实现进栈、出栈、输出栈里元素的功能。

代码如下:

#include 
#include
#define MaxSize 100 typedef int ElemType;typedef int Status;typedef struct { ElemType data[MaxSize]; int top1; int top2;}Stack, *pStack;//初始化 Status InitStack(pStack S){ S->top1 = -1; S->top2 = MaxSize; return 1;}//入栈函数 Status Push_Stack(pStack S, ElemType e, int stackNumber){ if (S->top1 + 1 == S->top2) return 0; switch (stackNumber) { case 1: S->data[++S->top1] = e; break; case 2: S->data[--S->top2] = e; break; } return 1;}//出栈函数 Status Pop_Stack(pStack S, ElemType *e, int stackNumber){ if (1 == stackNumber) { //判断栈是否为空 if (-1 == S->top1) return 0; *e = S->data[--S->top1]; } else if (2 == stackNumber) { if (MaxSize == S->top2) return 0; *e = S->data[++S->top2]; printf("出栈的元素为:%d\n",*e); } return 1;}//输出栈中的元素 Status DispStack(pStack S, int stackNumber){ int i; if (1 == stackNumber) { if (-1 == S->top1){ printf("栈为空!\n"); return 0; } printf("栈1中的元素为:"); for (i = 0; i <= S->top1; i++) printf("%d ", S->data[i]); printf("\n"); printf("栈顶元素为:%d\n", S->data[S->top1]); } else if (2 == stackNumber) { if (MaxSize == S->top2){ printf("栈为空!\n"); return 0; } printf("栈2中的元素为:"); for (i = MaxSize - 1; i >= S->top2; i--) printf("%d ", S->data[i]); printf("\n"); printf("栈顶元素为:%d\n", S->data[S->top2]); }}int main(void){ Stack S; ElemType e; int n; int tmp; InitStack(&S); for (;;){ printf("请选择要输入哪个栈中的元素 1或2,退出输入请输入3:\n"); //Visual C++ 2012 使用了更加安全的 run-time library routines 。新的Security CRT functions(就是那些带有“_s”后缀的函数) scanf_s("%d", &n); if (3 == n) { break; } else if(1!=n && 2!=n){ printf("输入错别选项!请选择要输入哪个栈中的元素 1或2,退出输入请输入3:\n"); } printf("请输入元素值:\n"); scanf_s("%d", &tmp); if (1 == n || 2 == n) { if (0 == Push_Stack(&S, tmp, n)){ printf("栈已满,不能再添加元素!\n"); break; } } } while (true){ printf("请选择要输出哪个栈中的元素 1或2:\n"); scanf_s("%d", &n); if (n == 1) { DispStack(&S, 1); break; } else if (n == 2) { DispStack(&S, 2); break; } else{ printf("输入错误选项!\n"); } } system("pause"); return 0;}

转载于:https://www.cnblogs.com/haochaopeng/p/4991748.html

你可能感兴趣的文章
Lesson 19 Sold out
查看>>
第四次作业
查看>>
sqlserver之on与where条件
查看>>
二维树状数组模板
查看>>
poj1087最小割
查看>>
configparse模块 | 文件配置 | Python (转载)
查看>>
C++中四种显示类型转换总结
查看>>
java线程池原理
查看>>
c++学习笔记2--constexpr,类型别名,auto
查看>>
LRU近期最少使用算法
查看>>
Sublime Text 2 插件
查看>>
Spring框架
查看>>
★色盲悖论正解!
查看>>
牛人们的博客地址
查看>>
[Codevs] 2492 上帝造题的七分钟2
查看>>
【Java编程思想 - 练习】吸血鬼数字
查看>>
【WP8】同步执行异步代码
查看>>
HDU1945 非常可乐(数论)
查看>>
Codeforces 997B Roman Digits(半打表)
查看>>
[JSOI2008] 火星人prefix
查看>>