public class Class16
{
int rear=-1;
int max=0;
char[] infix_p=new char[9]{'#',')','+','-','/','^',',','(','*'};
char[] stack_p=new char[8]{'#','(','+','-','*','/','^',','};
public static void Main()
{
Class16 myClass16=new Class16();
char[] infix_q=new char[20];//用于存放输入的中序队列
Console.WriteLine("****************************");
Console.WriteLine("operate");
Console.WriteLine("*:mul");
Console.WriteLine("+:add");
Console.WriteLine("-:Sub");
Console.WriteLine("/: Divide");
Console.WriteLine("****************************");
Console.WriteLine("please input infix expression:\n");
while(infix_q[rear]!='\n')
{
  infix_q[rear]=Convert.ToChar(Console.ReadLine()); }
myClass16.infix_to_postfix(infix_q);
Console.WriteLine("\n");    
}
public void infix_to_postfix(char[] a)
{
int rear=0;
Class16 myClass16=new Class16();
char[] infix_q=new char[max];//
    int tag=1,top=0,i;
char[] stack_b=new char[max];//用于存进栈内的元素
stack_b[top]='#';//把#作为栈底的结束符号
for(i=0;i<rear;i++)
{
switch(stack_b[i])
{
case ')':
while(stack_b[top]!='(')
{
   Console.WriteLine("[{0}]",stack_b[top--]);
top--; }
break;

case '#':
while(stack_b[top]!='#')
{
  Console.WriteLine("[{0}]",stack_b[top--]);
top--; }
break; case '^':
case '*': case '+':
case '-':
if(tag==1)
{
stack_b[top]=infix_q[i];
tag=2; }
else
{
while(true)
{
compare(stack_b[top],infix_q[i]);
     Console.WriteLine("[{0}]",stack_b[top]);
stack_b[top]=infix_q[i];
tag=1; }
} break;


case '/':
while(true)
{
compare(stack_b[top],infix_q[i]);
Console.WriteLine("[{0}]",stack_b[top--]);
stack_b[top]=infix_q[i];
tag=-1;

}
break;



case '(':
default :
Console.WriteLine("[{0}]",infix_q[i]);
if(tag==2)
{
  Console.WriteLine("[{1}]",stack_b[top]);
tag=0;
}
break;   
}
} }
public void compare(char stack_x,char index_x)
{
 
int index1=0,index2=0;
    while(stack_p[stack_x]!=stack_x)
{
   stack_x++;
}
while(infix_p[index_x]!=index_x)
{
  index_x++;
}
if(index1/2>=index2/2)
{
Console.WriteLine("有元素出栈");
}
else
{
  Console.WriteLine("没有元素出栈");
}
}
}
c:\inetpub\wwwroot\c\Class16.cs(109): 检测到无法访问的代码   此句:break;
c:\inetpub\wwwroot\c\Class16.cs(28): 非静态的字段、方法或属性“c.Class16.rear”要求对象引用,代码为: while(infix_q[rear]!='\n')
{
  infix_q[rear]=Convert.ToChar(Console.ReadLine()); }
ya