#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 第一步 按照運算子的優先順序對所有的運算單位加括號 式子變成拉...