实现代码:
stack.h
#include "utility.h"
#include "typedef.h"
const int maxstack = 10;
class Stack{
public:
Stack();
Error_code pop();
Error_code push(const Stack_entry &item);
Error_code top(Stack_entry &item) const;
bool empty() const;
private:
int count;
Stack_entry entry[maxstack];
};
utility.h
enum Error_code{success,overflow,underflow};
stack.cpp
#include "stack.h"
Error_code Stack::push(const Stack_entry &item){
/*
Precondition: None;
Postcondition: If the stack is not full, item is added to the top of the stack. If the stack
is full, an Error_code of overflow is returned and the Stack is left unchanged.
*/
Error_code outcome = success;
if(count>=maxstack)
outcome = overflow;
else entry[count++] = item;
return outcome;
}
Error_code Stack::pop(){
/*
Pre: none
Post: If the stack is not empty, the top of the stack is
removed. If the Stack is empty, an error_code of
underflow is returned.
*/
Error_code outcome = success;
if(count==0)
outcome = underflow;
else --count;
return outcome;
}
Error_code Stack::top(Stack_entry &item) const{
/*
Pre: None.
Post: If the stack is not empty, the top of the stack is return in item.
If the stack is empty, an Error_code of underflow is returned.
*/
Error_code outcome = success;
if(count==0)
outcome = underflow;
else
item = entry[count-1];
return outcome;
}
bool Stack::empty() const{
/*
Pre: None.
Post: If the stack is empty, true is returned. Otherwise false is returned.
*/
if (count>0) return false;
else return true;
}
Stack::Stack(){
/*
Pre: None.
Post: The stack is initialized to be empty.
*/
count = 0;
}
typedef.h
typedef int Stack_entry;