C++实现stack【栈】
生活随笔
收集整理的這篇文章主要介紹了
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] << '\n'; 36 } 37 38 39 private : 40 void errMsg(const char * msg) const { 41 cerr << "\n*** Stack operation failure : "<< msg << '\n'; 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() << '\n';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 . . .*/
?
轉載于:https://www.cnblogs.com/super90/p/4390873.html
總結
以上是生活随笔為你收集整理的C++实现stack【栈】的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 制作个性签名的软件
- 下一篇: C# SQLiteHelper