新聞中心
在C語(yǔ)言中,將中綴表達(dá)式轉(zhuǎn)換為后綴表達(dá)式(逆波蘭表示法)可以通過(guò)以下步驟實(shí)現(xiàn):

競(jìng)秀網(wǎng)站建設(shè)公司創(chuàng)新互聯(lián)公司,競(jìng)秀網(wǎng)站設(shè)計(jì)制作,有大型網(wǎng)站制作公司豐富經(jīng)驗(yàn)。已為競(jìng)秀超過(guò)千家提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\成都外貿(mào)網(wǎng)站建設(shè)公司要多少錢,請(qǐng)找那個(gè)售后服務(wù)好的競(jìng)秀做網(wǎng)站的公司定做!
1、創(chuàng)建一個(gè)棧用于存儲(chǔ)運(yùn)算符,并創(chuàng)建一個(gè)字符串用于存儲(chǔ)后綴表達(dá)式。
2、從左到右掃描中綴表達(dá)式。
3、如果遇到操作數(shù),將其添加到后綴表達(dá)式。
4、如果遇到運(yùn)算符,則處理?xiàng)m數(shù)倪\(yùn)算符,直到棧為空或者棧頂?shù)倪\(yùn)算符優(yōu)先級(jí)低于當(dāng)前運(yùn)算符,然后將當(dāng)前運(yùn)算符壓入棧。
5、如果遇到左括號(hào),將其壓入棧。
6、如果遇到右括號(hào),處理?xiàng)m數(shù)倪\(yùn)算符,直到遇到左括號(hào)為止,然后彈出左括號(hào)。
7、重復(fù)步驟26,直到掃描完中綴表達(dá)式。
8、處理?xiàng)V惺S嗟倪\(yùn)算符,將其添加到后綴表達(dá)式。
以下是一個(gè)簡(jiǎn)單的C語(yǔ)言實(shí)現(xiàn):
#include#include #include #include int precedence(char op) { if (op == '+' || op == '') return 1; if (op == '*' || op == '/') return 2; return 0; } void infixToPostfix(char *infix, char *postfix) { int i, j = 0; char stack[strlen(infix)]; int top = 1; for (i = 0; i < strlen(infix); i++) { if (isalnum(infix[i])) { postfix[j++] = infix[i]; } else if (infix[i] == '(') { stack[++top] = infix[i]; } else if (infix[i] == ')') { while (top != 1 && stack[top] != '(') { postfix[j++] = stack[top]; } top; } else { while (top != 1 && precedence(stack[top]) >= precedence(infix[i])) { postfix[j++] = stack[top]; } stack[++top] = infix[i]; } } while (top != 1) { postfix[j++] = stack[top]; } postfix[j] = '\0'; } int main() { char infix[] = "a+b*(c^de)^(f+g*h)i"; char postfix[strlen(infix)]; infixToPostfix(infix, postfix); printf("Infix expression: %s ", infix); printf("Postfix expression: %s ", postfix); return 0; }
這個(gè)程序?qū)⒅芯Y表達(dá)式 "a+b*(c^de)^(f+g*h)i" 轉(zhuǎn)換為后綴表達(dá)式 "abcd^efgh*+^*+i"。
本文題目:C中怎么將中綴表達(dá)式轉(zhuǎn)換為后綴表達(dá)式(中綴表達(dá)式轉(zhuǎn)后綴表達(dá)式c語(yǔ)言)
文章起源:http://m.5511xx.com/article/cocgsoj.html


咨詢
建站咨詢
