中綴表示式和逆波蘭式的相互轉換

2021-08-21 17:40:25 字數 1552 閱讀 7023

至於中綴表示式和逆波蘭式是什麼就不多闡述了。

中綴表示式和波蘭式的相互轉換思想是一樣的

int judge(char data)

return res;

}string getnibolan(string str)else

if(cur ==')')else

}}else

}else

if ( ('a'

<=cur&&cur<='z')||('a'

<=cur && cur<='z')||('0'

<=cur && cur<='9') )elseelse

}else

}}else}}

//問題1 忘記了 列印出棧中的所有元素

while (!isempty(stack))

return newstr;

}

string getzhongzhui(string str)else

if(cur == '+' || cur == '-')else

}else

}else

if(cur == '*' || cur =='/')else

}else}}

//如果字串的首位有括號,直接去掉

if (newstr[0]=='(' && newstr[newstr.length()-1] ==')' )

return newstr;

}

//鏈式棧的定義(不帶頭結點,頭插法)

//n->h->d->b->c->r

typedef

struct lsnodelsnode ,*linkstack;

//初始化乙個棧

void initstack(linkstack &top)

//清空乙個棧

void clearstack(linkstack &top)

}//進棧

void push(linkstack &top,char data);

top = p;

}//出棧

char pop(linkstack &top)

int res = 0;

lsnode* p = top;

top = top->next;

res = p->data;

return res;

}//檢視棧頂元素

char gettop(linkstack top)

return top->data;

}//求棧的長度

int length(linkstack top)

return count;

}//棧是否為空

bool isempty(linkstack top)

return

false;

}//棧是否為滿

bool isfull(linkstack top)

int main()

中綴表示式和逆波蘭式的相互轉換

例子 in 8 3 2 6 5 4 out 8 3 2 6 5 4 中綴表示式轉換為逆波蘭式 將乙個普通的中序表示式轉換為逆波蘭表示式的一般演算法是 其中stack op 用來存放運算子棧。陣列ans用來存放字尾表示式。演算法思想 從左到右掃瞄中綴表示式,是運算元就放進陣列ans的末尾。1 如果是 ...

中綴式轉換為逆波蘭表示式

搗騰了一天,總算有個雛形了,先發上來吧,已知的bug 1.直接輸入回車會溢位,2.表示式不完整會溢位,3.多餘的 會造成未知的結果,但是如果是在式子的最後是沒有問題的,4.中文的字元會報錯。目前已知的就這麼多了吧 下面上 include include include struct stack ty...

字首 波蘭式 中綴 字尾表示式 逆波蘭式

中綴表示式 中綴表示式就是常見的運算表示式,如 3 4 5 6 字尾表示式 字尾表示式又稱逆波蘭表示式,與字首表示式相似,只是運算子位於運算元之後 比如 3 4 5 6 與字首表示式類似,只是順序是從左至右 從左至右掃瞄表示式,遇到數字時,將數字壓入堆疊,遇到運算子時,彈出棧頂的兩個數,用運算子對它...