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
{
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
解决方案 »
- 年会发了一个Surface,特此散分。
- 这是什么语法--急(谢谢)
- 求datatable在northscale的存储方案
- File.Delete 遇到的异常
- 问一下,以下代码中,方括号什么作用?
- 十万火急请教Xml WebService配置问题,为什么我的老是出现Running the project requires setting an initial Web page. To set this page,
- asp.net无法访问所请求的资源
- .net基础问题2
- 查找数据并显示数据的问题!(问题很菜,请各位指点一下!)
- 请问哪里有 vs.net 中文正式版下载?
- 线程函数中有死循环,能检查得到吗?
- 请问一个日期的简单问题
while(true)
{
compare(stack_b[top],infix_q[i]);
Console.WriteLine("[{0}]",stack_b[top--]);
stack_b[top]=infix_q[i];
tag=-1;
}
break;//\inetpub\wwwroot\c\Class16.cs(109): 检测到无法访问的代码
{
if(infix_q[i]=='\n')
{
infix_q[++i]=Convert.ToChar(Console.ReadLine()); }
}
这样就解决了。