数据结构之---C语言实现共享栈
来源:互联网 发布:linux fsck修复危险性 编辑:程序博客网 时间:2024/04/25 16:20
所谓共享栈是两个栈在一个顺序的存储空间中。两个栈的栈底分别是存储空间的首尾地址。
如图我们可以将两个栈构造成一个:
如图:
从这里也就可以分析出来,栈1为空时,就是top1等于-1时;而当top2等于n时,即是栈2为空时,那么什么时候栈满呢?
想想极端的情况,若栈2是空栈,栈1的top1等于n-1时,就是栈1满了。反之,当栈1为空栈时,top2等于0时,为栈2满。但更多的情况,其实就是刚才说的,两个栈见面之时,也就是两个指针之间相差1时,即top1+1==top2为栈满。
具体的实现代码如下:
//共享栈//杨鑫#include <stdio.h>#include <stdlib.h>#define MaxSize 60 #define OK 1 #define ERROR 0 #define TRUE 1 #define FALSE 0 typedef int ElemType; typedef int Status; typedef struct { ElemType data[MaxSize]; int top1; int top2;}Stack, *pStack; Status init_Stack(pStack S){S->top1 = -1;S->top2 = MaxSize;return OK; }Status push_Stack(pStack S, ElemType e, int stackNumber){if (S->top1+1 == S->top2)return ERROR;switch(stackNumber){case 1:S->data[++S->top1] = e;break;case 2:S->data[--S->top2] = e;break;}return OK;}Status pop_Stack(pStack S, ElemType *e, int stackNumber){if (1 == stackNumber){if (-1 == S->top1)return ERROR;*e = S->data[S->top1--];}else if (2 == stackNumber){if (MaxSize == S->top2)return ERROR;*e = S->data[S->top2++];}return OK;}Status dis_pStack(pStack S, int stackNumber){int i;if (1 == stackNumber){if (-1 == S->top1)return ERROR;printf("栈1中的元素为:\n");for (i=0; i<=S->top1; ++i)printf("%d ", S->data[i]);printf("\n==================================\n");}else if (2 == stackNumber){if (MaxSize == S->top2)return ERROR;printf("栈2中的元素为:\n");for (i=MaxSize-1; i>=S->top2; --i)printf("%d ", S->data[i]);printf("\n==================================\n");}}int main(){printf("======共享栈===========\n\n");Stack S;ElemType e;init_Stack(&S);push_Stack(&S, 1, 1);push_Stack(&S, 2, 1);push_Stack(&S, 3, 1);push_Stack(&S, 4, 1);push_Stack(&S, 5, 1);push_Stack(&S, 6, 1);pop_Stack(&S, &e, 1);push_Stack(&S, 10, 2);push_Stack(&S, 9, 2);push_Stack(&S, 8, 2);push_Stack(&S, 7, 2);dis_pStack(&S, 1);dis_pStack(&S, 2);return 0;}
图片:
0 0
- 数据结构之---C语言实现共享栈
- 数据结构C语言实现之顺序栈
- 数据结构C语言实现之链栈
- 数据结构之栈的c语言实现
- 数据结构之栈(C语言实现)
- 数据结构之 栈(C语言实现)
- 数据结构之---C语言实现括号匹配(栈实现)
- 数据结构C语言实现栈
- 数据结构.栈(C语言实现)
- 数据结构---栈C语言实现
- 数据结构栈C语言实现
- 数据结构C语言之栈的简单实现
- 数据结构 学习笔记之:顺序栈的C语言实现
- 【数据结构】栈学习之数组实现(C语言)
- 数据结构之---c语言实现栈的顺序存储
- C语言学习之数据结构栈的实现
- C语言实现数据结构之栈的详解
- c语言数据结构之栈
- DEV 主从表
- 浅谈变量的原始值、存储状态、实际值和输出值
- MyEclipse编写JavaScript是出现error retrieving AST from Provider
- QtCreator的配置文件
- 微信购物一周年发展研究报告
- 数据结构之---C语言实现共享栈
- Android Studio如何引用jar包(非gradle)
- 小胖说事11-------automaticallyAdjustsScrollViewInsets(个人认为iOS7中略坑爹的属性)
- scala编程---类与对象
- 炼数成金 Dataguru培训优惠码
- MagicalRecord入门教程
- unix网络编程-第3,4章套接字编程
- 为了女儿.500租了一个老公
- linux点滴0