共享栈
2017-11-27 18:13
127 查看
共享栈
共享栈能减少预分配空间过多造成的浪费,又能降低发生栈上溢而产生错误中断的可能性示例代码
#include <stdio.h> #include <stdlib.h> #define MAXSIZE 50 typedef struct{ int data[MAXSIZE]; int top1; int top2; }SharedStack; int InitSStack(SharedStack *S); int PushSStack(SharedStack *S, int x, int StackNumber); int PopSStack(SharedStack *S, int *x, int StackNumber); void print_hyphen(int n); int main(void) { SharedStack ss; if(!InitSStack(&ss)){ printf("共享栈初始化失败!\n"); exit(1); } else printf("共享栈初始化成功!\n"); int end = 0; int ope; int n, StackNumber; while(!end){ print_hyphen(15); printf("\n"); printf("请输入指令来执行操作\n"); print_hyphen(15); printf("\n"); printf("1、入栈\n2、出栈\n3、退出\n"); print_hyphen(15); printf("\n"); printf("输入要使用的功能的序号: "); scanf("%d", &ope); switch(ope){ case 1: printf("请输入要入栈的数据: "); scanf("%d", &n); printf("请输入要所选栈的编号: "); scanf("%d", &StackNumber); PushSStack(&ss, n, StackNumber); break; case 2: printf("请输入要出栈的栈的编号: "); scanf("%d", &StackNumber); PopSStack(&ss, &n, StackNumber); printf("%d号栈出栈的元素为:%d\n", StackNumber, n); break; case 3: printf("再见!\n"); end = 1; break; default: printf("无此序号,请重新输入!\n"); } } return 0; } int InitSStack(SharedStack *S) { S->top1 = 0; S->top2 = MAXSIZE -1; return 1; } int PushSStack(SharedStack *S, int x, int StackNumber) { if(S->top1-1 == S->top2) return 0; switch(StackNumber) { case 1: S->data[S->top1++] = x; break; case 2: S->data[S->top2--] = x; break; } return 1; } int PopSStack(SharedStack *S, int *x, int StackNumber) { if(StackNumber == 1){ if(S->top1 == 0) return 0; *x = S->data[--S->top1]; } else if(StackNumber == 2){ if(S->top2 == MAXSIZE-1) return 0; *x = S->data[++S->top2]; } return 1; } void print_hyphen(int n) { while(n--) printf("-"); }
相关文章推荐
- Linux下共享内存及线程的创建
- 跨域资源共享CORS
- 02两栈共享空间_DoubleStack--(栈与队列)
- 自动化部署MySQL 5.6 步骤 制作到ftp共享,永远使用
- Javascript脚本树开发详解(二)源代码共享
- VM上的LINUX虚拟机共享Windows文件夹
- 让你的win7笔记本变身无线路由,让手机,平板.笔记本,支持WIFI的无线设备可以共享上网
- git学习,git视频教程,git资料共享
- Nginx+IIS+Redis 处理Session共享问题 2
- centos 7虚拟机主机共享文件和Tools工具安装
- 关于笔记本共享wifi(wifi共享精灵,猎豹wif)经常断线速度非常慢的问题
- 共享存储之drbd应用详解及pacemaker实现高可用共享存储(一)
- 系统V共享内存详解
- 共享一个ORM框架XDbFramework
- 无网线连接的XP与Linux文件共享
- Android应用程序与SurfaceFlinger服务之间的共享UI元数据(SharedClient)的创建过程分析
- 搭建ftp服务器实现文件共享
- 启动Windows虚拟机都会弹出Parallels共享文件夹通知
- 多服务器环境下session共享问题
- 通过ServletContext实现Servlet之间共享数据