1 #include<iostream> 2 #include<iomanip> 3 using namespace std; 4 5 enum error{overflow,underflow,success}; 6 const int maxlen=100; 7 8 class stack 9 { 10 public: 11 stack();//初始化 12 ~stack();//析构 13 bool empty() const;//判断空 14 bool full() const;//判断满 15 int get_front(int &x)const;//取栈顶元素 16 error push(const int x);//入栈 17 error pop();//出栈 18 private: 19 int count;//统计栈中元素的个数 20 int data[maxlen];//存储栈中数据 21 }; 22 23 /* 24 *初始化栈 25 */ 26 stack:: stack() 27 { 28 count=0; 29 } 30 31 /* 32 *判断为空 33 */ 34 bool stack::empty() const{ 35 if(count==0)return true; 36 return false; 37 } 38 39 /* 40 *判断为满 41 */ 42 bool stack::full() const{ 43 if(count==maxlen)return true; 44 return false; 45 } 46 47 /* 48 *取栈顶元素 49 */ 50 int stack::get_front(int &x)const{ 51 if(empty())return underflow; 52 x=data[count-1]; 53 return success; 54 } 55 56 /* 57 *入栈 58 */ 59 error stack::push(const int x){ 60 if(full())return overflow; 61 data[count]=x; 62 count++; 63 return success; 64 } 65 66 /* 67 *出栈 68 */ 69 error stack::pop(){ 70 if(empty())return underflow; 71 count--; 72 return success; 73 } 74 stack::~stack() 75 { 76 while(!empty())pop(); 77 } 78 79 /* 80 *十进制数转化为八进制数 81 */ 82 int xchg(int n,stack s){ 83 cout<<"十进制:["<<n<<"]->8进制:"; 84 int mod,x; 85 while(n!=0){ 86 mod = n % 8; 87 s.push(mod); 88 n/=8; 89 } 90 while(s.empty()!=true){ 91 s.get_front(x); 92 cout<<x; 93 s.pop(); 94 } 95 cout<<endl; 96 return 0; 97 } 98 int main() 99 { 100 stack s; 101 xchg(100,s); 102 return 0; 103 } 104