Stack.h
#ifndef STACK_H_
#define STACK_H_
struct customer{
char fullname[35];
double payment;
};
typedef customer Item;
class Stack{
private:
enum{MAX=10};
Item items[MAX];
int top;
public:
Stack();
bool isEmpty()const;
bool isFull()const;
bool push(const Item &item);
bool pop(Item &item);
};
#endif
Stack.cpp
#include<iostream>
#include "stack.h"
using namespace std;
Stack::Stack()
{
top=0;
}
bool Stack::isEmpty()const
{
return top==0;
}
bool Stack::isFull()const
{
return top==MAX;
}
bool Stack::push(const Item &item)
{
if(isFull())
{
cout<<"Error !Stack is full!"<<endl;
return false;
}
else
items[top++]=item;
return true;
}
bool Stack::pop(Item &item)
{
if(top<=0)
{
cout<<"Error !Stack is empty"<<endl;
return false;
}
else
{
item=items[--top];
return true;
}
}
main105.cpp
#include <iostream>
#include "stack.h"
using namespace std;
void main105()
{
static int total=0;
Stack sc;
customer c[5]={
{"I",10},
{"II",20},
{"III",40},
{"IV",50},
{"V",60}
};
customer s[10];//用于存储pop出来的customer
for(int i=0;i<5;i++)
{
sc.push(c[i]);
cout<<"now push "<<c[i].fullname<<" payment is "<<c[i].payment<<endl;
}
for(int i=0;i<5;i++)
{
sc.push(c[i]);
cout<<"now push "<<c[i].fullname<<" payment is "<<c[i].payment<<endl;
}
sc.push(c[3]);
for(int i=0;i<10;i++)
{
sc.pop(s[i]);
total+=s[i].payment;
cout<<"total="<<total<<endl;
}
sc.pop(s[1]);
cin.get();
}