c

#include<iostream>
#include<string.h>
//数组实现的栈,能存储任意类型的数据
using namespace std;
//模板类
template<class T>
class ArrayStack{
public:
ArrayStack();
~ArrayStack();
void push(T t);//向栈中添加一个t元素
T peek();//向栈中取出一个元素
T pop();//在栈中删除一个元素
int size();//大小
int isEmpty();//判断是否为空
private:
T *arr;//数组?
int count;
};
// 创建“栈”,默认大小是12
template<class T>
ArrayStack<T>::ArrayStack() //这里面就是比普通的
{
arr = new T[12];
if (!arr)
{
cout<<"arr malloc error!"<<endl;
}
}
// 销毁“栈”
template<class T>
ArrayStack<T>::~ArrayStack()
{
if (arr)
{
delete[] arr;
arr = NULL;
}
}
// 将val添加到栈中
//向栈中添加一个元素
template<class T>
void ArrayStack<T>::push(T t)
{
//arr[count++] = val;
arr[count++] = t;
}
// 返回“栈顶元素值”
template<class T>
T ArrayStack<T>::peek()
{
return arr[count-1];
}
// 返回“栈顶元素值”,并删除“栈顶元素”
template<class T>
T ArrayStack<T>::pop()
{
int ret = arr[count-1];
count--;
return ret;
}
// 返回“栈”的大小
template<class T>
int ArrayStack<T>::size()
{
return count;
}
// 返回“栈”是否为空
template<class T>
int ArrayStack<T>::isEmpty()
{
return size()==0;
}
int p(char c)
{
int pri;
switch(c)
{
case'*':pri = 2;break;
case'/':pri = 2;break;
case'+':pri = 1;break;
case'-':pri = 1;break;
}
return pri;
}

void c(char c[])
{
ArrayStack<char> s1;
ArrayStack<char> s2;
char c2[20];
int i;
for(i=0;i<11;i++)
{
if(c[i]>='0'&&c[i]<='9')
{
s2.push(c[i]);
}else if(c[i]=='+'||c[i]=='-'||c[i]=='*'||c[i]=='/'){
while(true){
if(s1.isEmpty()||s1.peek()=='('){
s1.push(c[i]);
break;
}else if(p(c[i])>p(s1.peek())){
s1.push(c[i]);
break;
}else{
char cc = s1.peek();
s1.pop();
s2.push(cc);
}
}
}else{

}
}
}

int main()
{
char c[20] = {"1+(2-3/4)*5"};


}

上一篇:c – 是否允许访问联合成员的公共基类,而不管存储的类型是什么?


下一篇:UVA12100 Printer Queue