//  main.cpp

#include <iostream>

using namespace std;

#include "Status.h"

typedef int SElemType;

#include "SqStack.h"

int main()

{

SqStack S;

SElemType e;

InitStack(S);

Push(S,2);

Push(S,4);

Push(S,6);

Push(S,8);

cout<<"\n由栈底至栈顶的元素为:";

StackTraverse(S);

cout<<"\n栈的长度为:"<<StackLength(S)<<endl;

GetTop(S,e);

cout<<"\n栈顶元素为:"<<e<<endl;

Pop(S,e);

cout<<"\n由栈底至栈顶的元素为:";

StackTraverse(S);

cout<<"\n栈的长度为:"<<StackLength(S)<<endl;

GetTop(S,e);

cout<<"\n栈顶元素为:"<<e<<endl;

return 0;

}

//  Status.h

#ifndef yuan_Status_h

#define yuan_Status_h

#define TRUE 1

#define FALSE 0

#define OK 1

#define ERROR 0

#define INFEASIBLE -1

#define OVERFLOW -2

typedef int Status;

#endif

//  SqStack.h

#ifndef Y_Y_SqStack_h

#define Y_Y_SqStack_h

#define MAXSIZE 100

typedef struct{

SElemType *base;

SElemType *top;

int stacksize;

}SqStack;

Status InitStack(SqStack &S)

{

S.base=new SElemType[MAXSIZE];  //为顺序栈分配一个最大容量为MAXSIZE的数组空间

if(!S.base)  exit(OVERFLOW);

S.top=S.base;

S.stacksize=MAXSIZE;

return OK;

}

Status Push(SqStack &S,SElemType e)

{

if (S.top-S.base==S.stacksize) return ERROR;  //满栈

*S.top++=e;  //元素e压入栈顶,栈顶指针加1

return OK;

}

Status Pop(SqStack &S,SElemType &e)

{

if(S.top==S.base) return ERROR;  //空栈

e=*--S.top;  //栈顶指针减1,将栈顶元素赋给e

return OK;

}

Status StackLength(SqStack S)

{

return (int)(S.top-S.base);

}

Status GetTop(SqStack S,SElemType e)

{

if (S.top==S.base) exit(1);

return *(S.top-1);  //栈顶指针减1,返回栈顶元素

}

void StackTraverse(SqStack S)

{

SElemType *p;

p=S.base;

while(p!=S.top)

{

cout<<*p++<<"  ";

}

cout<<endl;

}

#endif

D_S 顺序栈的基本操作的更多相关文章

  1. 顺序栈的基本操作(C语言)

    由于现在只学了C语言所以就写这个C语言版的栈的基本操作 这里说一下 :网上和书上都有这种写法 int InitStack(SqStack &p) &p是取地址  但是这种用法好像C并不 ...

  2. php模拟顺序栈基本操作

    php模拟顺序栈基本操作 一.总结 写函数什么永远记住边界情况:比如 echo "栈已满!<br/>" ;  栈已空这种,那就能多考虑几种情况,代码就很正宗了 1.对象 ...

  3. 把十进制整数转换为r(r=2)进制输出(顺序栈实现)

    上周的第二个作业补上~~ 上周的要求: 1.给出顺序栈的存储结构定义. 2.完成顺序栈的基本操作函数. 1)      初始化顺序栈 2)      实现入栈和出栈操作 3)      实现取栈顶元素 ...

  4. 数据结构之顺序栈SqStack

    顺序栈SqStack 基本操作 Status InitStack()//构造一个空栈S Status DestroyStack()//销毁栈S,S不再存在 Status ClearStack()//把 ...

  5. 数据结构——Java实现顺序栈

    一.分析 栈是限定仅在表的一端进行插入或删除操作的线性表,对于栈来说,操作端称为栈顶,另一端则称为栈底,栈的修改是按照后进先出的原则进行的,因此又称为后进先出的线性表. 顺序栈是指利用顺序存储结构实现 ...

  6. 数据结构(C实现)------- 顺序栈

    栈是限定仅在表的一端进行插入或删除的纯属表,通常称同意插入.删除的一端为栈顶(Top),对应在的.则称还有一端为栈底(Bottom). 不含元素的栈则称为空栈. 所设栈S={a1,a2,a3,..., ...

  7. C++ 栈的基本操作

    // zhan.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <iostream> using namesp ...

  8. C++实现链栈的基本操作

    之前对顺序栈写了基本操作,认为有必要也动手练练栈的链表实现. 对于链栈,一般不会出现栈满的情况. 链栈头文件定义例如以下: #ifndef CSTOCK_H_ #define CSTOCK_H_ ty ...

  9. STL-stack和顺序栈实现括号匹配

    2018-11-11-14:28:31 1.顺序栈 下面是我用数组实现的顺序栈,包含的函数有出入栈,查看栈顶元素,栈的大小,栈是否空等函数,当栈空间不够用时,对应的数组会自动增长. /******** ...

随机推荐

  1. AnyChatCoreSDK.h

    #ifndef ANYCHATCORESDK_H #define ANYCHATCORESDK_H #include <windows.h> #include <stdlib.h&g ...

  2. Linq之select子句

    在Linq中select子句用来指定查询结果的类型和表现形式.Linq查询要么以select子句结尾,要么以group子句结尾. List<UserBaseInfo> users = ne ...

  3. 安装、部署... Windows服务 .net程序 安装 命令

    @echo offInstallutil.exe 程序目录 F:\test\TestWindows.exe 服务程序目录@sc start "服务名称"@sc config &qu ...

  4. 【C#进阶系列】06 类型和成员基础

    这些东西是基础中的基础,基本上是本书都会讲这个.但是很多东西到处都有,所以只捡了以下的这些写下来. 关于类型的可见性和可访问性 也就是public,internal这种东西,但是还是有个东西要提一下, ...

  5. x3dom 1.6 发布

    X3DOM 库的1.6版本发布了,以下是最重要的一些变化: 完整的新的文档频道 -  http://doc.x3dom.org x3dom实例频道 - http://examples.x3dom.or ...

  6. 清除浮动after

    .clearf{display: inline-block;} .clearf:after { content: "."; display: block; height:; cle ...

  7. windows下使用makecert命令生成自签名证书

    1.makecert命令路径 C:\Program Files (x86)\Windows Kits\8.1\bin\x64 2.生成一个自签名证书 makecert -r -pe -n " ...

  8. 微软发布ASP.NET 5路线图

    这次随 Visual Studio 2015 发布的 ASP.NET 版本是 ASP.NET 4.6 与 ASP.NET 5 beta5.在 VS2015 发布的同时,微软也发布了 ASP.NET 5 ...

  9. [C/C++] VS 2015 C++ 插件

    Visual Studio2015 Community一些必备插件 ReSharper C++ 各种语言版本的代码重构,代码风格,代码修正功能,非常强大,可惜不是免费的,不过好在可以破解呢. Vias ...

  10. sudo gem install cocoapods 没反应问题

    1. 尝试更新 sudo gem update --system 2. 查看安装详细 sudo gem install cocoapods -V 3.详细使用有个链接 http://blog.csdn ...