![]() |
#2
m21wo2010-10-17 10:26
![]() ArrayStack.h template<class T> class ArrayStack { int size; int tos; T* contain; public: ArrayStack():size(0),tos(-1),contain(NULL) { } ArrayStack(int MaxSize); void Push(T element); T Pop(); bool IsEmpty(); }; ArrayStack.cpp #include <iostream> #include <cassert> #include "ArrayStack.h" using namespace std; #define MaxSize 10 //设定顺序栈的最大容量 template<class T> ArrayStack<T>::ArrayStack(int max=MaxSize) // 应该这么写! { size = max; tos = -1; contain = new T[size]; } //指定元素入栈 template<class T> void ArrayStack< T >::Push(T element) { assert(tos != size-1); contain[++tos] = element; } //栈顶元素出栈 template<class T> T ArrayStack< T >::Pop() { assert(tos != -1); return contain[tos--]; } //判断顺序栈是否为空 template<class T> bool ArrayStack< T >::IsEmpty() { return (tos == -1); } int main() { ArrayStack<char> small(MaxSize); char a; do { cin>>a; switch(a) { case '(': small.Push(a); break; case ')': if(!small.IsEmpty()) { small.Pop(); break;; } if(small.IsEmpty()) { cout<<"匹配错误!"<<endl; exit(0); break; } } }while (a != '0'); if(small.IsEmpty()) { cout<<"匹配正确!"<<endl; } else { cout<<"匹配错误!"<<endl; } return 0; } 就没错误了! ![]() |

//ArrayStack.h
//顺序栈类的定义
template<class T>
class ArrayStack
{
int size;
int tos;
T* contain;
public:
ArrayStack():size(0),tos(-1),contain(NULL)
{
}
ArrayStack(int MaxSize);
void Push(T element);
T Pop();
bool IsEmpty();
};//main.cpp
#include "ArrayStack.h"
#include "iostream"
using namespace std;
#define MaxSize 10
//顺序栈功能为完成括号匹配,
int main()
{
ArrayStack<char> small(MaxSize);
char a;
do
{
cin>>a;
switch(a)
{
case '(':
small.Push(a);
break;
case ')':
if(!small.IsEmpty())
{
small.Pop();
break;;
}
if(small.IsEmpty())
{
cout<<"匹配错误!"<<endl;
exit(0);
break;
}
}
}while (a != '0');
if(small.IsEmpty())
{
cout<<"匹配正确!"<<endl;
}
else
{
cout<<"匹配错误!"<<endl;
}
return 0;
}
//ArrayStack.cpp//顺序栈类的定义
template<class T>
class ArrayStack
{
int size;
int tos;
T* contain;
public:
ArrayStack():size(0),tos(-1),contain(NULL)
{
}
ArrayStack(int MaxSize);
void Push(T element);
T Pop();
bool IsEmpty();
};//main.cpp
#include "ArrayStack.h"
#include "iostream"
using namespace std;
#define MaxSize 10
//顺序栈功能为完成括号匹配,
int main()
{
ArrayStack<char> small(MaxSize);
char a;
do
{
cin>>a;
switch(a)
{
case '(':
small.Push(a);
break;
case ')':
if(!small.IsEmpty())
{
small.Pop();
break;;
}
if(small.IsEmpty())
{
cout<<"匹配错误!"<<endl;
exit(0);
break;
}
}
}while (a != '0');
if(small.IsEmpty())
{
cout<<"匹配正确!"<<endl;
}
else
{
cout<<"匹配错误!"<<endl;
}
return 0;
}
#include "ArrayStack.h"
#include "assert.h"
//设定顺序栈的最大容量
template<class T>
ArrayStack< T >::ArrayStack(int MaxSize)
{
size = MaxSize;
tos = -1;
contain = new T[size];
}
//指定元素入栈
template<class T>
void ArrayStack< T >::Push(T element)
{
assert(tos != size-1);
contain[++tos] = element;
}
//栈顶元素出栈
template<class T>
T ArrayStack< T >::Pop()
{
assert(tos != -1);
return contain[tos--];
}
//判断顺序栈是否为空
template<class T>
bool ArrayStack< T >::IsEmpty()
{
return (tos == -1);
}