-5
這是我的程序,使用堆棧將表達式從後綴轉換爲中綴。我沒有得到任何錯誤,但在運行時,編譯器說Segmentation Fault - Core Dumped。我認爲這與指向垃圾值的指針有關。如何tracebck到這個流氓指針?另外,有沒有更好的方法將Postfix轉換爲中綴?分割錯誤 - 核心轉儲
#include<iostream>
#include<string.h>
#include<stdio.h>
#include<math.h>
class StringStack
{
public:
char arr[20][20];
int top;
StringStack()
{top=-1; arr[20][20]={NULL};}
void push(char* a)
{strcpy(arr[++top],a);}
char* pop()
{return arr[top--];}
};
void paranthesise(char a[])
{
int l = strlen(a);
a[l+2] = '\0';
for(int i=l; i>=0; i++)
a[i] = a[i-1];
a[0] = '(';
a[l+1] = ')';
}
using namespace std;
int main()
{
char temp[1];
char postfix[20] = "";
char temp2[10] = "";
char temp3[10] = "";
StringStack s1;
cout<<"Enter Postfix Expression: "<<endl;
gets(postfix); int l = strlen(postfix);
for(int i=0; i<l; i++)
{
if(postfix[i]!='*'&&postfix[i]!='/'&&postfix[i]!='+'&&postfix[i]!='-')
{
temp[0]=postfix[i];
s1.push(temp);
}
else
{
strcpy(temp2,s1.pop());
strcpy(temp3,s1.pop());
switch(postfix[i])
{
case'*':
temp[0]='*'; break;
case'/':
temp[0]='/'; break;
case'+':
temp[0]='+'; break;
case'-':
temp[0]='-'; break;
default: cout<<"Error"; break;
}
strcat(temp3,temp);
strcat(temp3,temp2);
paranthesise(temp3);
s1.push(temp3);
}
}
strcpy(temp2,s1.pop());
cout<<"\nInfix:";
puts(temp2);
return 0;
}
可能的重複項:[#1](http://stackoverflow.com/q/20612172),[#2](http://stackoverflow.com/q/22546079),[#3](http:/ /stackoverflow.com/q/4363133)。 –
在'paranthesise'中:'for(int i = l; i> = 0; i ++)'我猜你在這裏想要'我 - '。 – user657267
*「另外,有沒有更好的方法將Postfix轉換爲中綴?」*太寬泛。 –