数据结构与算法之——两栈共享存储空间.docx

数据结构与算法之——两栈共享存储空间.docx

ID:59355532

大小:38.75 KB

页数:6页

时间:2020-09-04

数据结构与算法之——两栈共享存储空间.docx_第1页
数据结构与算法之——两栈共享存储空间.docx_第2页
数据结构与算法之——两栈共享存储空间.docx_第3页
数据结构与算法之——两栈共享存储空间.docx_第4页
数据结构与算法之——两栈共享存储空间.docx_第5页
资源描述:

《数据结构与算法之——两栈共享存储空间.docx》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、数据结构与算法之——两栈共享存储空间其实栈的顺序存储很方便,因为它只在表尾进行操作,不存在普通线性表插入与删除还需要移动元素的情况。同样它也有普通线性表的缺陷,即必须确定数量。然而对于两个相同类型的栈,却可以做到最大限度地利用其开辟的存储空间来进行操作。        数组有两个端点,两个栈使用这一个数组的存储区域,两个栈有两个栈底,分别为数组的始端和末端。这样在压栈的时候,是栈顶指针往中间靠拢,当两指针相遇时,则栈满。栈空即top1=-1,top2=n。而栈满则是top1+1==top2;代码实现:SqDoubleStack.h[cpp]viewplai

2、ncopyprint?1./*两栈共享空间--顺序栈结构 */  2.  3.#define MAXSIZE 5  4.typedef int SElemType;  5.typedef struct  6.{  7.    SElemType data[MAXSIZE];  8.    int top1;   //栈1 栈顶指针  9.    int top2;   //栈2 栈顶指针  10.}SqDoubleStack;  11.  12.#define OK 1  13.#define ERROR 0  14.typedef int Status;

3、  15.  16.Status InitStack(SqDoubleStack *S); //初始化操作,建立一个空栈S  17.Status DestroyStack(SqDoubleStack *S);  //栈栈存在,则销毁它  18.Status ClearStack(SqDoubleStack *S);    //将栈清空  1.int StackEmpty(SqDoubleStack S,int stackNumber);    //若栈为空,返回true,否则返回false  2.Status GetTop(SqDoubleStack S,

4、SElemType *e,int stackNumber);    //若栈存在且非空,用e返回S的栈顶元素  3.Status Push(SqDoubleStack *S,SElemType e,int stackNumber);  //若栈S存在,将新元素e插入栈S中并成为栈顶元素  4.Status Pop(SqDoubleStack *S,SElemType *e,int stackNumber);  //删除栈S中栈顶元素,并用e返回其值  5.int StackLength(SqDoubleStack S,int stackNumber);  

5、 //返回栈S的长度  /*两栈共享空间--顺序栈结构*/#defineMAXSIZE5typedefintSElemType;typedefstruct{SElemTypedata[MAXSIZE];inttop1;//栈1栈顶指针inttop2;//栈2栈顶指针}SqDoubleStack;#defineOK1#defineERROR0typedefintStatus;StatusInitStack(SqDoubleStack*S);//初始化操作,建立一个空栈SStatusDestroyStack(SqDoubleStack*S);//栈栈存在,则销

6、毁它StatusClearStack(SqDoubleStack*S);//将栈清空intStackEmpty(SqDoubleStackS,intstackNumber);//若栈为空,返回true,否则返回falseStatusGetTop(SqDoubleStackS,SElemType*e,intstackNumber);//若栈存在且非空,用e返回S的栈顶元素StatusPush(SqDoubleStack*S,SElemTypee,intstackNumber);//若栈S存在,将新元素e插入栈S中并成为栈顶元素StatusPop(SqDoub

7、leStack*S,SElemType*e,intstackNumber);//删除栈S中栈顶元素,并用e返回其值intStackLength(SqDoubleStackS,intstackNumber);//返回栈S的长度SqDoubleStack.c[cpp]viewplaincopyprint?1.#include  2.#include  3.#include  4.#include "SqDoubleStack.h"  5.  6.int main(void)  7.{  8.    Sq

8、DoubleStack S;  9.    InitStack(&

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。