数据结构之栈的简单实例c++实现

#include <iostream>
using namespace std;
/*
    定义栈类
*/
class Stack
{
private:
 int *m_Data;//栈中的元素
    int m_nTop;//栈顶位置
    int m_nSize;//栈的大小
 
public:
 Stack( int size );
    Stack(Stack & s); //拷贝构造函数
 ~Stack();//析构函数
 void Push(int e );// 压栈函数
 void Pop(int &e );// 出栈函数
    //通过友元函数来实现<<运算符的重载
    friend Stack operator<<(Stack &s,int e){
         while(1){
            s.Pop(e);
            cout<<e;
            }
        } //输出栈所有元素的函数(重载<<)
    //内联函数来判断栈是否是空的
 inline bool Stack::IsEmpty();
 inline bool Stack::IsFull();
};

Stack::Stack(Stack & s){

    }
//构造函数的实现
Stack::Stack( int size ) : m_nTop( 0 ), m_nSize( size )
{
 m_Data = new int[size];
 if( m_Data == NULL )
 {
  exit( 1 );
 }
}
//析构函数的实现
Stack::~Stack()
{
 delete[] m_Data;
}
//压栈函数的实现
void Stack::Push(int e )
{
 if( IsFull() == true )
 {
  exit(1);
 }
 else
 {
  m_Data[m_nTop] = e;
  ++m_nTop;
 }
}
//弹栈函数的实现
void Stack::Pop( int &e )
{
 if( IsEmpty() == true )
 {
  exit(1);
 }
 else
 {
  --m_nTop;
   e = m_Data[m_nTop];
 }
}
//2个内联函数的实现
inline bool Stack::IsEmpty()
{
 return (m_nTop == 0);
}
inline bool Stack::IsFull()
{
 return (m_nTop == m_nSize);
}
int main()
{   int e;
    Stack s(10);
    cout<<"-------------将十进制转换成八进制----------------------"<<endl;
    cout<<"请输入要转换的十进制数"<<endl;
    int i;
    cin>>i;
    while(1){
        s.Push(i%8);
        i=i/8;
        if(i%8==0){
        break;
        }
    }
    cout<<"转换成的八进制为:"<<endl;
    s<<(s,e);
 return
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章