两栈共享空间
来源:互联网 发布:vray for rhino mac 编辑:程序博客网 时间:2024/05/22 14:17
明确:
1.栈一为空,指向-1
2.栈二为空,指向MAXSIZE
#include <iostream>using namespace std;#include "stdio.h"#include "stdlib.h"#include "io.h"#include "math.h"#include "time.h"#define OK 1#define ERROR 0#define TRUE 1#define FALSE 0#define MAXSIZE 20 /* 存储空间初始分配量 */typedef int Status;typedef int SElemType; /* SElemType类型根据实际情况而定,这里假设为int *//* 两栈共享空间结构 */typedef struct{ SElemType data[MAXSIZE]; int top1; //栈1的栈顶指针 int top2; //栈2的栈顶指针}SqDoubleStack;Status initializer_list(SqDoubleStack *Q){ Q->top1=-1; Q->top2=MAXSIZE;}Status ClearStack(SqDoubleStack *Q){ Q->top1 = -1; Q->top2 = MAXSIZE; return OK;}int LengthStack(SqDoubleStack *Q){ return Q->top1+1 + (MAXSIZE-Q->top2);}Status isEmpty(SqDoubleStack *Q){ //这里指的是总栈为空,而非栈1或栈2为空 if(Q->top1==-1&&Q->top2==MAXSIZE){ return TRUE; }else{ return FALSE; }}//e插入元素,s插入栈的类型 1表示插入栈1 2表示插入栈2Status Push(SqDoubleStack *S,SElemType e,int stackNumber){ if(S->top1+1 == S->top2){ //栈满 return ERROR; } if(stackNumber == 1){ //要插入栈1 S->data[++S->top1] = e; }else if(stackNumber == 2){ S->data[--S->top2] = e; } return OK;}Status Pop(SqDoubleStack *S,SElemType *e ,int stackNumber){ if(stackNumber==1){ if(S->top1 == -1){ //栈1已经空了 return ERROR; } *e = S->data[S->top1--]; }else{ if(S->top2 == MAXSIZE){ //栈2已经空了 return ERROR; } *e = S->data[S->top2++]; }}void StackTraverse(SqDoubleStack S){ int i; i=0; while(i<=S.top1) { printf("栈1元素%d\n",S.data[i++]); } i=S.top2; while(i<MAXSIZE) { printf("栈2元素%d\n",S.data[i++]); } printf("\n");}int main(){ SqDoubleStack s; initializer_list(&s); printf("测试入栈\n"); int i=0; for(;i<10;i++){ Push(&s,i+1,1); } for(i=MAXSIZE;i>=MAXSIZE-9;i--) Push(&s,i,2); StackTraverse(s); printf("测试出栈\n\n"); int returnResult; for(i=s.top1;i>-1;i--){ Pop(&s,&returnResult,1); printf("栈1出栈元素%d\n",returnResult); } for(i=s.top2;i<MAXSIZE;i++){ Pop(&s,&returnResult,2); printf("栈2出栈元素%d\n",returnResult); } printf("总栈的长度\n"); printf("%d\n",LengthStack(&s));}
0 0
- 两栈共享空间
- 两栈共享空间
- 两栈共享空间
- 两栈共享空间
- 两栈共享空间
- 两栈共享空间
- 两栈共享空间
- 两栈共享空间
- 两栈共享空间
- 两栈共享空间
- 两栈共享空间
- 两栈共享空间
- 两栈共享空间
- 栈-----两栈共享空间
- 【栈】两栈共享空间
- 两栈共享空间思路
- 顺序栈,两栈共享空间,链栈
- 数据结构--栈--两栈共享空间
- 初探OpenCV+GPU
- http详解
- C++之赋值函数和析构函数
- 解决Hibernate生成的表的代理主键(id)不是自增长
- bzoj 3720: Gty的妹子树 树分块
- 两栈共享空间
- C#中struct和enum学习分享
- 在腾讯地图jar包升级后,安卓异步任务失效解决。
- 对于UITableView的细节点说明
- GPS漫谈
- zzu数学 实验八物理现象之模拟电场线
- gcc -l参数和-L参数
- 前端高频面试题
- BMP图片格式解析