栈的实现
基于vector顺序容器的栈的实现
#ifndef WEIWEI_H
#define WEIWEI_H
#include<vector>
using std::vector;
template<typename object>
class Stack{
public:
Stack(int val=-1):topOfStack(val){}
void push(const object& val)
{
topOfStack++;
theArray.push_back(val);
}
object & pop()
{
object temp=theArray.back();
topOfStack--;
theArray.pop_back();
return temp;
}
object & top()
{
return theArray.back();
}
bool isEmpty()
{
return topOfStack==-1;
}
private:
vector<object> theArray;
int topOfStack;
};
#endif
#include<iostream>
#include<fstream>
#include<sstream>
#include"weiwei.h"
using namespace std;
int main(){
Stack<char> s;
ifstream infile("1.txt");
if(!infile)
{
cout<<"文件打开失败!";
return 4;
}
ofstream outfile("2.txt");
if(!outfile)
{
cout<<"文件打开失败!";
return 4;
}
string line;
char w;
while(getline(infile,line))
{
istringstream stream(line);
while(stream>>w){
if(w=='('||w=='['||w=='{')
{
s.push(w);
outfile<<w;
}
if(w==')'||w==']'||w=='}')
{
if(s.isEmpty())
{
cout<<"文件错误!1"<<endl;
return 1;
}
if((s.top()=='(' && w==')')||(s.top()=='[' && w==']') ||(s.top()=='{' && w=='}'))
{
s.pop();
outfile<<w;
}
else
{
cout<<"文件错误!2"<<endl;
return 2;
}
}
}
}
if(!s.isEmpty())
cout<<"文件错误!3"<<endl;
else
cout<<"文件正确匹配!"<<endl;
infile.close();
outfile.close();
return 0;
}