顺序栈就是用顺序表(数组)实现的栈。其组织形式如下图所示:

下面介绍下我用C++实现的顺序栈,在VC6下调试通过。不足之处还请指正。

1、文件组织

2、ss.h栈类的声明及宏的定义

#ifndef _SS_H_
#define _SS_H_ typedef int dataType;
#define maxSize 100 class stack
{
public:
stack();
//~stack();
void push(dataType var); //压栈
void pop(); //出栈,什么都不返回
dataType stackTop(); //返回栈顶数据,栈顶不变化
bool isEmpty(); //空则返回true,否则返回false
bool isFull(); //满则返回true,否则返回false private:
dataType s[maxSize]; //顺序表组成的栈空间
int top; //栈顶指针
}; #endif

3、ss.cpp栈类成员函数的定义

#include "ss.h"

stack::stack()
{
top = -1; //表示栈为空
} void stack::push(dataType var)
{
s[++top] = var; //入栈
} void stack::pop()
{
--top; //出栈只要将指针向下移
} dataType stack::stackTop()
{
return s[top]; //s[top]为栈顶数据
} bool stack::isEmpty()
{
return top == -1; //top为-1时栈为空
} bool stack::isFull()
{
return top == maxSize-1; //top为maxSize时栈为满
}

4、mian.cpp

#include <iostream>
#include "ss.h"
using namespace std; int main()
{
stack exp; //只有栈未满才能压栈
if(!exp.isFull())
{
exp.push(1);
} //只有栈非空才能取栈顶元素和出栈
if(!exp.isEmpty())
{
cout<<"栈顶数据是: "<<exp.stackTop()<<endl;
exp.pop();
} if(exp.isEmpty())
{
cout<<"栈为空!"<<endl;
} return 0;
}

顺序栈之C++实现的更多相关文章

  1. 数据结构:C_顺序栈的实现

    数据结构顺序栈的实现(C语言版) 1.写在前面 栈是一种遵循元素先进(Push)后出(Pop)规则的线性表,它的实现可以用数组或者链表. ..... 2.代码分解 2.1对栈的结构定义: typede ...

  2. D_S 顺序栈的基本操作

    //  main.cpp #include <iostream> using namespace std; #include "Status.h" typedef in ...

  3. 数据结构Java实现05----栈:顺序栈和链式堆栈

    一.堆栈的基本概念: 堆栈(也简称作栈)是一种特殊的线性表,堆栈的数据元素以及数据元素间的逻辑关系和线性表完全相同,其差别是线性表允许在任意位置进行插入和删除操作,而堆栈只允许在固定一端进行插入和删除 ...

  4. 01顺序栈_Stack---(栈与队列)

    #include "stdio.h" #include "stdlib.h" #include "io.h" #include " ...

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

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

  6. 数据结构之顺序栈SqStack

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

  7. 顺序栈和链式栈(C++实现)

    顺序栈,是一种基于数组的存储表示. 实现类代码如下: template<class T> class SeqStack{ T *element; int top; int maxSize; ...

  8. salesforce零基础学习(七十六)顺序栈的实现以及应用

    数据结构中,针对线性表包含两种结构,一种是顺序线性表,一种是链表.顺序线性表适用于查询,时间复杂度为O(1),增删的时间复杂度为O(n).链表适用于增删,时间复杂度为O(1),查询的时间复杂度为O(n ...

  9. 【小白成长撸】--顺序栈(C语言版)

    // 顺序栈.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h"//test1.0--栈表仅限Int类型 #include <stdio. ...

随机推荐

  1. magento 获取attribute的所有option

    $attribute = Mage::getSingleton('eav/config')->getAttribute('catalog_product', 'color');if ($attr ...

  2. asp-net-web-api 自定义URl插件

    http://attributerouting.net/#asp-net-web-api https://github.com/johnpapa/CodeCamper/blob/master/Code ...

  3. Hibernate 报错:this project is not a myeclipse hibernate project . assuming hibernate 3 cap

    问题描述:  web 项目中 打开 hibernate.cfg.xml 文件时 提示:The project is not a myEclipse hibernate project. 并且:在 db ...

  4. 基于HTML5 Canvas的网页画板实现教程

    HTML5的功能非常强大,尤其是Canvas的应用更加广泛,Canvas画布上面不仅可以绘制任意的图形,而且可以实现多种多样的动画,甚至是一些交互式的应用,比如网页网版.这次我们要来看的就是一款基于H ...

  5. VS中,无法嵌入互操作类型“……”,请改用适用的接口的解决方法

    最近使用VS,在引用COM组件的时候,出现了无法嵌入互操作类型“……”,请改用适用的接口的错误提示.查阅资料,找到解决方案,记录如下: 选中项目中引入的dll,鼠标右键,选择属性,把“嵌入互操作类型” ...

  6. android开发SDcard 响应的文件相关处理(一)

    android开发相关文件类的处理工具类: package com.gzcivil.utils; import java.io.File; import java.util.ArrayList; im ...

  7. Ubuntu Code::Blocks IDE 13.12 汉化

    Ubuntu Code::Blocks IDE 13.12 汉化: 安装很简单,不再赘述. 单说汉化: .下载中文简体汉化包(百度网盘):链接: http://pan.baidu.com/s/1kU3 ...

  8. c# 根据中文汉字获取到拼音

    public static String ConvertToPinyin(String str) { if (String.IsNullOrEmpty(str)) return String.Empt ...

  9. sqlserver事务与回滚

    如果要在Production执行数据改动必须小心,可以使用事务提前验证一下自己写的SQL是不是你期望的.尤其是Update的where 条件有问题的话,跟新的记录就会超出预期的范围.如下面的语句,一着 ...

  10. iOS判断并使用百度地图 高德地图 导航 (使用URI,不集成sdk)

    [objc] view plaincopy  1. BOOL hasBaiduMap = NO;   2.         BOOL hasGaodeMap = NO;   3.            ...