码迷,mamicode.com
首页 > 其他好文 > 详细

stack操作

时间:2014-09-23 21:20:35      阅读:212      评论:0      收藏:0      [点我收藏+]

标签:c++      

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<string> _stack;
};
#endif


Stack.cpp

#include<string>
#include<vector>
#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<string>::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<iostream>
#include<string>
#include<vector>
#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"<<st.size()<<"strings!\n"
<<"The strings,in reverse order:\n";

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

cout<<‘\n‘<<"There are now "<<st.size()<<"elements in the stack!\n";


cout<<‘\n‘<<"Read in"<<st.size()<<"strings!\n";
cin.clear();


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


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


cout<<str<<(found?"is":"isn‘t")<<"in the stack.";
if(found)
{
cout<<"It occurs"<<count<<"times\n";
}
}


stack操作

标签:c++      

原文地址:http://blog.csdn.net/yrp_ssdut/article/details/39500329

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!