/*************************************************
* 棧 *
* 實現簡單stack類的棧 *
*************************************************/
#include<iostream>
#include<cstdlib>
#include<assert.h>
using namespace std;
const int STACK_SIZE = 100; //the max size of this stack;
/**************************************************
* stack 類 *
* 成員函數 *
* init ——初始化棧 *
* push -- 在棧中放入一個元素 *
* pop -- 彈出棧中頂部元素 *
**************************************************/
class stack {
private:
int count; //elememt of this stack;
int data[STACK_SIZE]; //元素本身
public:
//初始化棧
void init();
//將一個元素壓到棧中
void push(const int item);
//從棧中彈出一個元素
int pop();
};
/*************************************************
*stack::init--初始化棧 *
*************************************************/
inline void stack::init()
{
count = 0;//棧清零
}
/**************************************************
* stack::push --將一個元素壓到棧中; *
* 警告:這裡沒有檢查棧時候溢出 *
* 入口參數 *
* item:要放入的元素 *
**************************************************/
inline void stack::push(const int item)
{
assert((count >= 0)&&
(count < sizeof (data)/sizeof (data[0])));
data[count] = item;
++count;
}
/*************************************************
* stack::pop --將一個元素從棧中彈出 *
*警告:這裡沒有檢查棧是否溢出 *
*返回 *
*棧的頂部元素 *
*************************************************/
inline int stack::pop()
{
//棧下一位
count--;
return (data[count]);
}
//簡單測試
void main()
{
stack a_stack;//準備使用棧
a_stack.init();
a_stack.push(1);
a_stack.push(2);
a_stack.push(3);
cout<< "expect a 3:"<<a_stack.pop() <<"/n";
cout<< "expect a 2:"<<a_stack.pop() <<"/n";
cout<< "expect a 1:"<<a_stack.pop() << "/n";
}