解釋C語言中棧表示式的求值
棧是一種線性資料結構,資料只在一端插入和刪除。
演算法
以下是Push()演算法:
- 檢查棧溢位。
if (top = = n-1)
printf("stack over flow");- 否則,將元素插入棧中。
top ++ a[top] = item
以下是**Pop()**演算法:
- 檢查棧下溢。
if ( top = = -1) printf( "stack under flow");
否則,從棧中刪除一個元素。
item = a[top] top --
以下是**Display()**演算法:
if (top == -1)
printf ("stack is empty");否則,請遵循以下演算法。
for (i=0; i<top; i++)
printf ("%d", a[i]);棧的應用
讓我們瞭解一下在C語言中棧表示式的轉換。
表示式 - 它是運算元和運算子的合法組合。
表示式的型別
C語言中有三種型別的表示式可以進行轉換和求值。它們解釋如下:
中綴表示式 - 運算子位於運算元之間。例如,A+B
字首表示式 - 運算子位於運算元之前。例如,+AB
字尾表示式 - 運算子位於運算元之後。例如,AB+
字尾表示式的求值
演算法
從左到右掃描輸入字串。
對於每個輸入符號:
如果它是數字,則將其壓入棧中。
如果它是運算子,則從棧中彈出最上面的兩個內容,並對其應用運算子。然後,將結果壓入棧中。
如果輸入符號是‘\0’,則清空棧。
C語言字尾表示式求值程式
以下是C語言字尾表示式求值程式:
#include<stdio.h>
int top = -1, stack [100];
main ( ){
char a[50], ch;
int i,op1,op2,res,x;
void push (int);
int pop( );
int eval (char, int, int);
printf("enter a postfix expression:");
gets (a);
for(i=0; a[i]!='\0'; i++){
ch = a[i];
if (ch>='0' && ch<='9')
push('0');
else{
op2 = pop ( );
op1 = pop ( );
res = eval (ch, op1, op2);
push (res);
}
}
x = pop ( );
printf("evaluated value = %d", x);
getch ( );
}
void push (int n){
top++;
stack [top] = n;
}
int pop ( ){
int res ;
res = stack [top];
top--;
return res;
}
int eval (char ch, int op1, int op2){
switch (ch){
case '+' : return (op1+op2);
case '-' : return (op1-op2);
case '*' : return (op1*op2);
case '/' : return (op1/op2);
}
}輸出
執行上述程式時,會產生以下結果:
Run 1: enter a postfix expression:45+ evaluated value = 9 Run 2: enter a postfix expression: 3 5 2 * + evaluated value = 13
廣告
資料結構
網路
關係資料庫管理系統(RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP