首页 > 代码库 > [转载]C++堆栈的入门学习

[转载]C++堆栈的入门学习

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

 

头文件stackDemo.h

技术分享
 1 #pragma once//常用C++杂注,头文件最开始加入,能够保证头文件只被编译一次 2 typedef int DataType; 3 const int MaxStatckSize = 50; //定义栈的大小  4 class StackDemo 5 { 6 public: 7     //析构造函数 8     StackDemo(void); 9     ~StackDemo(void);10 11     //压栈出栈操作12     void Push( DataType item);13     DataType Pop(void);14     void ClearStack(void);15 16     //访问栈顶,返回栈顶当前下标17     DataType Peek(void)const;18 19     //检测椎栈20     bool isEmpty(void)const;21     bool isFull(void)const;22 23 private:24     DataType stacklist[MaxStatckSize];25     int tos;//栈顶26 };
View Code

实现 stackDemo.cpp

技术分享
 1 #include "StackDemo.h" 2 #include <iostream> 3 using namespace std; 4 StackDemo::StackDemo(void) 5 { 6     this->tos = -1; 7 } 8 StackDemo::~StackDemo(void) 9 {10     this->tos = -1;11 }12 void StackDemo::Push( DataType item)13 {14     //栈是否已满15     if (!isFull())16     {17         tos++;18         this->stacklist[tos] = item;19 20     }21     else22         cout << "Out of the Stack!" << endl;23 }24 25 DataType StackDemo::Pop(void)26 {27     if (!isEmpty())28     {29         int ebp = tos;30         tos --;31         return stacklist[ebp];32     }33     else34         return -1;35 }36 37 DataType StackDemo::Peek(void)const38 {39     return tos;40 }41 42 void StackDemo::ClearStack()43 {44     for (int i = tos; i >= 0; i--)45         stacklist[i] = 0;46     tos = -1;47     cout << "Clear stack done!" << endl;48 }49 50 bool StackDemo::isFull(void)const51 {52     return tos > MaxStatckSize ? true : false;53 }54 55 bool StackDemo::isEmpty(void)const56 {57     return tos < 0 ? true : false;58 }
View Code

main.cpp

技术分享
 1 #include <iostream> 2 #include "StackDemo.h" 3 using namespace std; 4   5 int main() 6 { 7     StackDemo *sd = new StackDemo(); 8     sd->Push(10);//压栈 9     sd->Push(20);//压栈10     sd->Push(30);//压栈11     cout << "Stack TOP:" << sd->Peek() << endl;12     for(int i=0;i<3;i++)13     cout << "POP:" << sd->Pop() << endl;14 15     cout << "Stack TOP:" << sd->Peek() << endl;16 17     return 0;18  19 }
View Code

 

  

[转载]C++堆栈的入门学习