首页 > 代码库 > [转载]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 };
实现 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 }
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 }
[转载]C++堆栈的入门学习
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。