C++ STL 容器基本範例實驗測試[04_CPP_STL_Stack ->純C++ Stack範例]

C++ STL 容器基本範例實驗測試[04_CPP_STL_Stack ->純C++ Stack範例]

C++ STL 容器基本範例實驗測試[04_CPP_STL_Stack ->純C++ Stack範例]


資料來源:https://www.cnblogs.com/skyfsm/p/6934246.html
http://larry850806.github.io/2016/06/06/STL1/
http://larry850806.github.io/2016/06/06/STL2/

GITHUB 完整資料: https://github.com/jash-git/Base_CPP_STL_Example [ 包含免安裝開發環境:CodeBlocks 12.11 方便自己測試使用 ]

線上執行:https://www.tutorialspoint.com/compile_cpp_online.php / http://codepad.org/


Stack 就是一疊盤子
只能拿走最上面的,或是繼續往上疊[先進後出]
基本功能有:
    ▲ top: 得到最上面的值
    ▲ push: 再拿一個盤子往上疊
    ▲ pop: 拿掉最上面的盤子
    ▲ size: 取個數
Stack 的優點
    ▲ 操作很簡單(只有疊上去跟拿下來XD)
Stack 的缺點
    ▲ 只能操作最上面的那個值
本範例額外紀錄
    ▲ 自製清空stack函數
    ▲

#include <iostream>
#include <cstdio>
#include <cstdlib>/* malloc, free, rand */
#include <cstring>/*strncpy .....*/
#include <string>/*c++ string class*/
#include <vector>
#include <queue>
#include <stack>

using namespace std;
/*
Stack 就是一疊盤子
只能拿走最上面的,或是繼續往上疊[先進後出]
基本功能有:
    ▲ top: 得到最上面的值
    ▲ push: 再拿一個盤子往上疊
    ▲ pop: 拿掉最上面的盤子
    ▲ size: 取個數
Stack 的優點
    ▲ 操作很簡單(只有疊上去跟拿下來XD)
Stack 的缺點
    ▲ 只能操作最上面的那個值
本範例額外紀錄
    ▲ 自製清空stack函數
    ▲
*/
void Pause()
{
    printf("Press Enter key to continue...");
    fgetc(stdin);
}
void stack_clear( std::stack<int> &s )//清空stack
{
   //https://stackoverflow.com/questions/709146/how-do-i-clear-the-stdqueue-efficiently
   std::stack<int> empty;
   std::swap( s, empty );
}
int main()
{
    stack<int> s;

    s.push(10);     //  | 30 |
    s.push(20);     //  | 20 |   疊三個盤子
    s.push(30);     //  |_10_|   10 在最下面
    cout << s.size() << endl;//顯示放入數量

    int j=s.size();
    for(int i=0 ; i<j; i++){    // s.size() = 3
        cout << s.top() << endl;
        s.pop();
    }                                   // 依序輸出 30, 20, 10
    cout << "-----------------------------" << endl;

    for(int i=0 ; i<5 ; i++){
        s.push(i * 10);
    }                   // 依序存入[0, 10, 20, 30, 40]
    stack_clear( s );//清空stack
    cout << s.size() << endl;//顯示放入數量
    cout << "-----------------------------" << endl;

    for(int i=0 ; i<5 ; i++){
        s.push(i * 10);
    }                   // 依序存入[0, 10, 20, 30, 40]
    cout << s.size() << endl;//顯示放入數量
    cout << "-----------------------------" << endl;

    while(s.size() != 0){
        cout << s.top() << endl;
        s.pop();
    }                   // 依序取出 0 10 20 30 40
    cout << s.size() << endl;//顯示最後數量

    Pause();
    return 0;
}

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *