您的位置:首页 > 理论基础 > 数据结构算法

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

2012-11-15 11:06 531 查看
#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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: