首页 > 其他 > 详细

stack操作

时间:2014-09-23 19:05:06      阅读:275      评论:0      收藏:0      [点我收藏+]

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操作

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

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!