stack操作

Stack.h

#ifndef STACK_H_
#define STACK_H_

class Stack
{
public:

bool find(const string &elem) const;//查找某值
int count(const string &elem) const;//计算次数
bool push(const string&);
bool pop( string &elem);
bool peek(string &elem);
bool empty() const{ return _stack.empty();}
bool full() const{return _stack.size() == _stack.max_size();}
int size() const { return _stack.size();}
private:
vector _stack;
};
#endif


Stack.cpp

#include
#include
#include "Stack.h"
using namespace std;


bool Stack::pop(string &elem)
{
if(empty())
return false;
elem=_stack.back();
_stack.pop_back();
return true;
}


bool Stack::peek(string &elem)
{
if(empty())
return false;
elem=_stack.back();
return true;
}


bool Stack::push(const string &elem)
{
if(full())
return false;
_stack.push_back(elem);
return true;
}


bool Stack::find(const string &elem) const
{
vector::const_iterator end_it = _stack.end();
return::find(_stack.begin(),end_it,elem)!=end_it;
}


int Stack::count(const string &elem) const
{
return::count(_stack.begin(),_stack.end(),elem);
}


main.cpp

#include
#include
#include
#include "Stack.h"
using namespace std;


int main()
{
Stack st;
string str;
while (cin>>str && !st.full())
{
st.push(str);
}


if (st.empty())
{
cout<<'\n'<<"Oops: no strings were read--bailing out\n";
return 0;
}

st.peek(str);

if (st.size()==1 && str.empty())
{
cout<<'\n'<<"Oops: no strings were read--bailing out\n";
return 0;
}


cout<<'\n'<<"Read in"<<<"The strings,in reverse order:\n";

while (st.size())
{
if(st.pop(str))
cout<}

cout<<'\n'<<"There are now "<


cout<<'\n'<<"Read in"< cin.clear();


cout<<"what word to search for?";
cin>>str;


bool found = st.find(str);
int count = found ? st.count(str) : 0;


cout< if(found)
{
cout<<"It occurs"< }
}


你可能感兴趣的:(【C/C++】)