#pragma once
typedef char DataType;
const int MaxStatckSize = 50; //栈大小
class StackDemo
{
private :
DataType stacklist[MaxStatckSize];
int top; //栈顶
public :
//构造函数
StackDemo( void );
~StackDemo( void );
public :
//压栈出栈操作
void Push( const DataType &item);
DataType Pop( void );
void ClearStack( void );
//访问栈顶
DataType Peek( void ) const ;
//检测椎栈
bool isEmpty( void ) const ;
bool isFull( void ) const ;
};
|
头文件stackDemo.h
|
#include "StackDemo.h"
#include <iostream>
StackDemo::StackDemo( void )
{
this ->top = -1;
}
StackDemo::~StackDemo( void )
{
this ->top = -1;
}
void StackDemo::Push( const DataType &item)
{
//栈是否已满
if (!isFull())
{ top += 1;
this ->stacklist[top] = item;
}
else
std::cout << "Out of the Stack!" << std::endl;
}
DataType StackDemo::Pop( void )
{
if (!isEmpty())
{
int ebp = top;
top -= 1;
return stacklist[ebp];
}
else
return -1;
}
DataType StackDemo::Peek( void ) const
{
return top;
}
void StackDemo::ClearStack()
{
for ( int i = top;i >=0 ;i--)
stacklist[i] = 0;
top = -1;
std::cout << "Clear stack done!" << std::endl;
}
bool StackDemo::isFull( void ) const
{
return top > MaxStatckSize? true : false ;
}
bool StackDemo::isEmpty( void ) const
{
return top < 0 ? true : false ;
}
|
实现 stackDemo.cpp
|
#include <iostream>
#include "StackDemo.h"
using namespace std;
int main()
{
StackDemo *sd = new StackDemo();
sd->Push(10); //压栈
sd->Push(20); //压栈
sd->Push(30); //压栈
cout << "Stack TOP:" << sd->Peek() << endl;
cout << "POP:" << sd->Pop() << endl;
system ( "pause" ); //暂停
return 0;
}
|
main.cpp
|