數據結構之棧的簡單實例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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章