字首表示式求值

2021-06-27 23:29:03 字數 926 閱讀 7389

思路:這裡實際是把字首表示式逆序輸出轉化為類似後序表示式求值:

比如:

輸入:+ + 2 * 3 - 7 4 / 8 4   處理成 4 8 / 4 7 - 3 * 2 + + 鍊錶,放到字尾表示式求值程式 postfixeval計算得
13.0

#include

#include

#include

#include

#define maxsize 100

//用鍊錶實現字首表示式,

typedef struct node

data;

struct node *next;

struct node *prev;   

}node;

int i***pression(int tmpexp)

int issuperior(int tmpexp,int tmpexp2)

void printnode(node* node)

}typedef struct stack2

stack2; 

void push(double num,stack2 *stack)

}double pop(stack2 *stack)

return ret;

}// 字尾表示式求值程式

double postfixeval(node * head)

else

push(val,&stack2);

}node=node->next;

}return val=pop(&stack2);

}int main(int argc, char* argv)

printf("%0.1f\n",postfixeval(tmpexpnode));

表示一位小數

return 0;

}

字首表示式求值

include using namespace std stackst double yunsuan double a,double b,string c else if c else if c else int main for int j i 1 j 0 j if st.empty if f1 ...

字首表示式求值

對於乙個字首表示式的求值而言,首先要從右至左掃瞄表示式,從右邊第乙個字元開始判斷,如果當前字元是數字則一直到數字串的末尾再記錄下來,如果是運算子,則將右邊離得最近的兩個 數字串 作相應的運算,以此作為乙個新的 數字串 並記錄下來。一直掃瞄到表示式的最左端時,最後運算的值也就是表示式的值。例如,字首表...

字首,字尾表示式求值

字首表示式 從右至左掃瞄表示式,遇到數字時,將數字壓入堆疊,遇到運算子時,彈出棧頂的兩個數,用運算子對它們做相應的計算 棧頂元素 op 次頂元素 並將結果入棧 重複上述過程直到表示式最左端,最後運算得出的值即為表示式的結果 從右至左,遇數壓1,遇符彈2,再來計算。字尾表示式 從左至右掃瞄表示式,遇到...