using namespace std;
/*
定義棧類
*/
class Stack
{
private:
int *m_Data;//棧中的元素
int m_nTop;//棧頂位置
int m_nSize;//棧的大小
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);
}
{
return (m_nTop == m_nSize);
}
Stack s(10);
cout<<"請輸入要轉換的十進制數"<<endl;
int i;
cin>>i;
while(1){
s.Push(i%8);
if(i%8==0){
break;
}
}
cout<<"轉換成的八進制爲:"<<endl;
s<<(s,e);
return