申明:   转自    http://www.cnblogs.com/pengshao/archive/2011/12/26/2301461.html

头文件stackDemo.h

 #pragma once//常用C++杂注,头文件最开始加入,能够保证头文件只被编译一次
typedef int DataType;
const int MaxStatckSize = ; //定义栈的大小
class StackDemo
{
public:
//析构造函数
StackDemo(void);
~StackDemo(void); //压栈出栈操作
void Push( DataType item);
DataType Pop(void);
void ClearStack(void); //访问栈顶,返回栈顶当前下标
DataType Peek(void)const; //检测椎栈
bool isEmpty(void)const;
bool isFull(void)const; private:
DataType stacklist[MaxStatckSize];
int tos;//栈顶
};

实现 stackDemo.cpp

 #include "StackDemo.h"
#include <iostream>
using namespace std;
StackDemo::StackDemo(void)
{
this->tos = -;
}
StackDemo::~StackDemo(void)
{
this->tos = -;
}
void StackDemo::Push( DataType item)
{
//栈是否已满
if (!isFull())
{
tos++;
this->stacklist[tos] = item; }
else
cout << "Out of the Stack!" << endl;
} DataType StackDemo::Pop(void)
{
if (!isEmpty())
{
int ebp = tos;
tos --;
return stacklist[ebp];
}
else
return -;
} DataType StackDemo::Peek(void)const
{
return tos;
} void StackDemo::ClearStack()
{
for (int i = tos; i >= ; i--)
stacklist[i] = ;
tos = -;
cout << "Clear stack done!" << endl;
} bool StackDemo::isFull(void)const
{
return tos > MaxStatckSize ? true : false;
} bool StackDemo::isEmpty(void)const
{
return tos < ? true : false;
}

main.cpp

 #include <iostream>
#include "StackDemo.h"
using namespace std; int main()
{
StackDemo *sd = new StackDemo();
sd->Push();//压栈
sd->Push();//压栈
sd->Push();//压栈
cout << "Stack TOP:" << sd->Peek() << endl;
for(int i=;i<;i++)
cout << "POP:" << sd->Pop() << endl; cout << "Stack TOP:" << sd->Peek() << endl; return ; }

  

[转载]C++堆栈的入门学习的更多相关文章

  1. [转载] SSH入门学习基础教程

    在Linux系统中,OpenSSH是目前最流行的远程系统登录与文件传输应用,也是传统Telenet.FTP和R系列等网络应用的换代产品.其 中,ssh(Secure Shell)可以替代telnet. ...

  2. OpenGL入门学习(转载)

    说起编程作图,大概还有很多人想起TC的#include <graphics.h>吧? 但是各位是否想过,那些画面绚丽的PC游戏是如何编写出来的?就靠TC那可怜的640*480分辨率.16色 ...

  3. 【转载】salesforce 零基础开发入门学习(六)简单的数据增删改查页面的构建

    salesforce 零基础开发入门学习(六)简单的数据增删改查页面的构建   VisualForce封装了很多的标签用来进行页面设计,本篇主要讲述简单的页面增删改查.使用的内容和设计到前台页面使用的 ...

  4. 【转载】salesforce 零基础开发入门学习(五)异步进程介绍与数据批处理Batchable

    salesforce 零基础开发入门学习(五)异步进程介绍与数据批处理Batchable   本篇知识参考:https://developer.salesforce.com/trailhead/for ...

  5. 【转载】salesforce 零基础开发入门学习(四)多表关联下的SOQL以及表字段Data type详解

    salesforce 零基础开发入门学习(四)多表关联下的SOQL以及表字段Data type详解   建立好的数据表在数据库中查看有很多方式,本人目前采用以下两种方式查看数据表. 1.采用schem ...

  6. 【转载】salesforce 零基础开发入门学习(三)sObject简单介绍以及简单DML操作(SOQL)

    salesforce 零基础开发入门学习(三)sObject简单介绍以及简单DML操作(SOQL)   salesforce中对于数据库操作和JAVA等语言对于数据库操作是有一定区别的.salesfo ...

  7. 【转载】salesforce 零基础开发入门学习(二)变量基础知识,集合,表达式,流程控制语句

    salesforce 零基础开发入门学习(二)变量基础知识,集合,表达式,流程控制语句 salesforce如果简单的说可以大概分成两个部分:Apex,VisualForce Page. 其中Apex ...

  8. 【转载】salesforce 零基础开发入门学习(一)Salesforce功能介绍,IDE配置以及资源下载

    salesforce 零基础开发入门学习(一)Salesforce功能介绍,IDE配置以及资源下载   目前国内已经有很多公司做salesforce,但是国内相关的资料确是少之又少.上个月末跳槽去了新 ...

  9. Hadoop入门学习笔记---part4

    紧接着<Hadoop入门学习笔记---part3>中的继续了解如何用java在程序中操作HDFS. 众所周知,对文件的操作无非是创建,查看,下载,删除.下面我们就开始应用java程序进行操 ...

随机推荐

  1. STM32f103之外部中断

    一.背景 有个需求,IO口检测上升沿,然后做相应的动作.在此记录STM32F103的外部中断结构及配置方法, 以备下次快速上手使用. 有许多不太明白,又是老司机(:-D)帮忙,真的是站在别人的肩膀上会 ...

  2. Total Commander 集成、调用 Beyond Compare比较文件

    1.打开wincmd.ini文件 2.在[Configuration]节下加入 Comparetool=d:\Program Files\小工具\Beyond Compare 3\BCompare.e ...

  3. 支持向量机SVM

    SVM(Support Vector Machine)有监督的机器学习方法,可以做分类也可以做回归.SVM把分类问题转化为寻找分类平面的问题,并通过最大化分类边界点距离分类平面的距离来实现分类. 有好 ...

  4. 整理iOS9适配中出现的坑(图文)

    原文: http://www.cnblogs.com/dsxniubility/p/4821184.html 整理iOS9适配中出现的坑(图文)   本文主要是说一些iOS9适配中出现的坑,如果只是要 ...

  5. jsp 入门 cookie session

    Java Server Page ==> 服务器端的动态页面资源.用来做显示的功能. JSP构成 ==> HTML 脚本代码 标签构成. JSP 原理 ==> 实际上就是 servl ...

  6. JS中创建函数的三种方式及区别

    1.函数声明 function sum1(n1,n2){ return n1+n2; }; 2.函数表达式,又叫函数字面量 var sum2=function(n1,n2){ return n1+n2 ...

  7. java学习第四天 类和变量

    java也属于面向对象的编程 面向对象的三大特征:  封装 继承 多态 类 对象 对象:真实存在的唯一的事物 面向对象编程(oop)思想力图使对计算机语言中的事物的描述和自然界中的事物尽可能保持一致 ...

  8. FTP安装与使用

    1.查看ftp是否已安装:rpm -qa | grep vsftpd 2.安装ftp:rpm -ivh vsftpd 或yum install vsftpd 3.匿名用户配置文件主要参数: anony ...

  9. LeetCode——Copy List with Random Pointer(带random引用的单链表深拷贝)

    问题: A linked list is given such that each node contains an additional random pointer which could poi ...

  10. git学习(二):查看状态和具体改动

    查看仓库状态 git status 可以查看有没有文件改动 查看改动情况 git diff readme.txt 以readme.txt为例,可以看readme.txt的改动情况,但对于二进制文件来说 ...