两栈共享空间
2016-06-30 00:27
369 查看
C++ Code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 | #include<stdio.h> #include"stdlib.h" #include"string.h" #include"math.h" #include"time.h" #define MAX 20 typedef struct { int data[MAX]; int top1; int top2; } SqDoubleStack; int InitStack(SqDoubleStack *s) { s->top1 = -1; s->top2 = MAX; return 1; } int Push(SqDoubleStack *s, int i, int j) { if (s->top1 + 1 == s->top2) return -1; if (j == 1) s->data[++s->top1] = i; else if (j == 2) s->data[--s->top2] = i; return 1; } int StackTraverse(SqDoubleStack s) { int i; i = 0; while (i <= s.top1) { printf("%d", s.data[i++]); } i = s.top2; while (i < MAX) { printf("%d", s.data[i++]); } printf("\n"); return 1; } int StackLength(SqDoubleStack s) { int i; i = s.top1 + 1 + (MAX - s.top2); return i; } int Pop(SqDoubleStack *s, int *e, int j) { if (j == 1) { if (s->top1 == -1) return -1; else *e = s->data[s->top1--]; } if (j == 2) { if (s->top2 == MAX) return -1; else *e = s->data[s->top2--]; } return 1; } int StackEmpty(SqDoubleStack s) { if ((s.top1 == -1) && (s.top2 == MAX)) return 1; else return -1; } int ClearStack(SqDoubleStack *s) { s->top1 = -1; s->top2 = MAX; return 1; } int main(void) { int i; SqDoubleStack s; int e; if (InitStack(&s) == 1) { for (i = 1; i <= 5; i++) Push(&s, i, 1); for (i = MAX; i >= MAX - 2; i--) Push(&s, i, 2); } printf("栈中的元素为:"); StackTraverse(s); printf("栈的长度为:%d\n", StackLength(s)); Pop(&s, &e, 2); printf("移出的栈顶元素为:%d\n", e); printf("栈是否为空(1为空, -1为非空)%d\n", StackEmpty(s)); ClearStack(&s); printf("清空后栈是否为空(1为空, -1为非空)%d\n", StackEmpty(s)); } |
相关文章推荐
- 高薪
- Codeforces Round #359 (Div. 2)D. Kay and Snowflake
- 沈逸老师PHP魔鬼特训笔记(2)
- Node.js安装
- Shell变量
- 大神博客
- 关于JS对象的一些小问题
- iReport模板制作已经常见错误(多图)
- Phpstrom10不用自带服务器配置apach服务器
- 关于Linux内核源代码情景分析的点点滴滴
- Java中用HttpsURLConnection访问Https链接的问题
- mysql自动备份脚本
- hello! Myblog
- PHP运行方式对比
- 字符串,字符数组,字符串数组之间的相互转换
- 一种查询参数对象的建立
- 怎样查看给定的安卓keystore的信息
- android 动画(2)帧动画
- App后台学习
- 使用Volley StringRequest返回String 编码格式错误乱码问题解决