zoukankan      html  css  js  c++  java
  • C++实现stack【栈】

    要求:

    //****file: stack.h
    /*
    对stack进行初始化
    检查stack为空,或已满
    将整数压入到stack中
    从stack里弹出整数
    不移除任何袁术,讲过stack的内容输出到标准输出
    Stack类的私有成员如下:
    一个用于打印错误信息的私有哦成员函数
    三个私有数据成员构成了stack类的private实现,此实现为类接口提供支持。

    */

    类的实现

     1 #include <iostream>
     2 using namespace std;
     3 
     4 
     5 class Stack{
     6     public : 
     7     enum {MaxStack = 5};
     8     //初始化栈,栈为空 
     9     void init () {top = -1;}
    10     
    11     void push (int n){
    12         if (isFull()){
    13             errMsg("Full stack .cant push");
    14             return ;        
    15         }
    16         arr[++top ] =n;        
    17     }
    18     
    19     int pop() {
    20         if (isEmpty () ){
    21             errMsg("Empty stack . Popping dummy value.");
    22             return dummy_val;
    23         }
    24     
    25         return arr[top-- ];
    26     }
    27     //检查statck是否为空 
    28     bool isEmpty() {return top <0 ;}
    29     //检查stack是否已满 
    30     bool isFull() {return top >= MaxStack - 1;}
    31     
    32     //dump倾倒 , 按照从stack顶端到底端的次序,依次将Stack的内容输出到标准输出 
    33     void dump () {
    34         for (int i = top; i >= 0; i--)
    35             cout << 't' << arr[i] << '
    ';
    36     }
    37      
    38 
    39     private :
    40         void errMsg(const char * msg) const {
    41             cerr << "
    *** Stack operation failure : "<< msg << '
    '; 
    42         }
    43         
    44         int top;
    45         int arr[ MaxStack ];
    46         int dummy_val;
    47 
    48 };

    测试代码如下:

    #include <iostream>
    #include "stack.h" 
    
    int main() {
        Stack s1;
        s1.init();
        s1.push(9);
        s1.push(4);
        s1.dump();
        cout << "Popping " << s1.pop() << '
    ';
        s1.dump();
        s1.push(8);
        s1.dump();
        s1.pop();s1.pop();
        s1.dump();
        s1.pop();
        s1.dump();
        s1.push(3);
        s1.push(5);
        s1.dump();
        
        for (unsigned i = 0; i <Stack::MaxStack; i++)
        s1.push(1);
        s1.dump();
        
        return 0;
    }

    调试结果:

    /*
    t4
    t9
    Popping 4
    t9
    t8
    t9
    
    *** Stack operation failure : Empty stack . Popping dummy value.
    t5
    t3
    
    *** Stack operation failure : Full stack .cant push
    
    *** Stack operation failure : Full stack .cant push
    t1
    t1
    t1
    t5
    t3
    
    --------------------------------
    Process exited with return value 0
    Press any key to continue . . .
    
    */
  • 相关阅读:
    实战,利用apache来做集群,实现负载均衡
    Paas
    mysql memcache
    JSP简单练习-定时刷新页面
    协定须要双工,可是绑定“WSHttpBinding”不支持它或者因配置不对而无法支持它
    ACM:图的BFS,走迷宫
    appium框架之bootstrap
    [JSP]JSP中include指令和include动作的差别
    cocos2d-x-3.1 win32程序-初识源代码(coco2d-x 学习笔记二)
    AT&amp;T汇编语言——简单实例及工具演示
  • 原文地址:https://www.cnblogs.com/super90/p/4390873.html
Copyright © 2011-2022 走看看