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

下面介绍下我用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. 一元云购qq互联回调地址错误解决办法

    经过追踪,点击登录后调用 system/modules/api/下面的qqlogin.action.class.php 里面又调用了qq 互联php接口样例里的QC.php的QC类的方法qq_logi ...

  2. Hibernate防止SQL注入

    如果在查询字段中输入单引号"'",则会报错,这是因为输入的单引号和其他的sql组合在一起编程了一个新的sql,实际上这就是SQL注入漏洞,后来我在前台和后台都对输入的字符进行了判断 ...

  3. Buffer Cache(缓冲区缓存)篇:keep缓冲区池(保留池)

    Buffer  Cache可以有三个池 默认缓冲区池 keep缓冲区池 recycling缓冲区池 --保留池和回收池可以独立于sga中的其他缓存分配内存.创建表的时候可以在storage子句中使用b ...

  4. Qt入门学习——Qt 5 帮助文档的使用

    Qt入门学习——Qt 5 帮助文档的使用 学习图形界面开发,肯定离不开帮助文档的使用,因为它不像 C 语言那样就那么几个函数接口,图形接口的接口可以用海量来形容,常用的我们可能能记住,其它的真的没有必 ...

  5. Java书籍推荐

    Java书籍推荐 转自:http://www.cnblogs.com/exclm/archive/2009/01/03/1367597.html 一.入门 <Java 2从入门到精通>- ...

  6. 剑指offer35 第一个只出现一次的字符

    class Solution { public: int FirstNotRepeatingChar(string str) { if(!str.size()) ; ]={}; ;i<str.s ...

  7. c++编程中的后缀

    .a 静态库 (archive) .C.c.cc.cp.cpp.cxx.c++ C++源代码(需要编译预处理) .h C或者C++源代码头文件 .ii C++源代码(不需编译预处理) .o 对象文件 ...

  8. Item with the same id "98" already exist

    在magento项目中多次遇到这样一个错误: Item (Bluecom_Onefieldusername_Model_Customer) with the same id "98" ...

  9. cocoa pods出现的错误

    ERROR:  While executing gem ... (Errno::EPERM) Operation not permitted - /usr/bin/pod 解决办法: sudo gem ...

  10. <memory> is not a BOMStorage file

    解决 Autoresizing 和AutoLayout 冲突 设置 self.autoresizingMask = UIViewAutoresizingNone;