字尾中綴表示式

2021-07-06 01:44:46 字數 2394 閱讀 3009

#include "stdio.h"

#include "conio.h"

#include "string.h"

#include "stdlib.h"

#define null 0

typedef struct node

node,*stack;//定義鏈式堆疊元素型別以及堆疊型別

typedef struct queuenode

queuenode;//定義鏈式佇列元素型別

typedef struct

queue;//定義鏈佇列型別

void createstack(stack &s) //建立乙個空堆疊(不帶頭結點的鏈棧)

int stackempty(stack s) //判斷堆疊是否為空

node *makenode(char *item) //建立乙個堆疊結點,並使其資料域等於item

return pnode;}

void push(stack &s,char *item)//壓棧

void pop(stack &s,char *item)//出棧

}void clearstack(stack &s)//清空堆疊

}int stacksize(stack s)//計算棧中結點的個數

return i;

}void stacktop(stack s,char *item)//取棧頂元素,但不把棧頂元素出棧

}queuenode *makequeuenode(char *item)//建立乙個鏈佇列結點,並使其資料域等於item

return pnode;

} void createqueue(queue &q) //建立乙個空佇列,不帶頭結點

int queueempty(queue q)//判斷乙個佇列是否為空

void queueinsert(queue &q,char *item)//入隊

}void queuedel(queue &q,char *item)//出隊

}int queuesize(queue q)//求佇列長度

return i;

}void clearqueue(queue &q)//清空佇列

}void queuefront(queue q,char *item)//取隊頭元素,但並不出隊

}void printqueue(queue q)//輸出佇列中的元素 }}

void printstack(stack s)//輸出堆疊中的元素 }}

int priorty(char opr)//求運算符號優先順序

}void caculate(queue q)//計算字尾表示式的數值,要求最初參與運算的數值是整數

else

} sprintf(num,"%f",fa); push(stack_num,num);

}}pop(stack_num,num); printf("\n運算結果是:%s",num);

}//括號匹配檢查

int kuohao(char x[200])

else if(s[i]==' '||s[i]=='\0')

}else

s[++tot]=c;}}

printf("%lf\n", s[tot]);

}int main()

houzui(***pression);

return 0;

} printf("\n請輸入待計算的表示式(中綴式):\n");

gets(***pression);

printf("%s\n",***pression);

if(!kuohao(***pression))

createstack(stack_opr);

createqueue(queue_exp);

i=0;

while(***pression[i]!='\0')

if(isnum)

else

push(stack_opr,temp);

break;

case ')': while(stack_opr->item[0]!='(')

pop(stack_opr,opr);

break;

} }printstack(stack_opr);//可以注釋掉,加上是為了看堆疊內元素的變化

printqueue(queue_exp);//可以注釋掉,加上是為了看佇列內元素的變化

} while(!stackempty(stack_opr))

printqueue(queue_exp);//這次佇列中所有的元素就是轉換好的字尾表示式

caculate(queue_exp);

printstack(stack_opr);//輸出計算結果

getch();

}

中綴表示式 字尾表示式

中綴表示式就是 a b 這樣的,運算子在兩個數的中間 字尾表示式就是 a b 這樣的,運算子在兩個數後面 再細分一下 中綴表示式 字尾表示式 a b c a b c a b c a b c a b c a b c a b c a b c a b c d e a c a b c d e a c emm...

中綴表示式 字尾表示式

數學表示式稱為中綴表示式,符合人的思考習慣 1 2 3運算子放在數字後面,符合計算機運算 123 遍歷中綴表示式中的數字和符號 左括號 入棧 運算符號 需要與棧頂符號進行優先順序比較 遍歷結束 將棧中所有符號彈出並輸出。例 中綴表示式 1 2 5 3 4 2 1 1 數字1直接輸出 結果 1 棧 空...

中綴表示式 字尾表示式

表示式 x a b c d e 的字尾表示形式可以為 c a xab cde b xa bc de c xabcd e d xabcde 表示式前字尾表達形式 乙個中綴式到其他式子的轉換方法 這裡我給出乙個中綴表示式 a b c d e 第一步 按照運算子的優先順序對所有的運算單位加括號 式子變成拉...