#include "stdio.h"
#include "conio.h"
#include "string.h"
#include "stdlib.h"
#define null 0
typedef struct node
node;//定義鏈式堆疊元素型別
typedef struct stack
stack; //定義鏈式堆疊型別
typedef struct queuenode
queuenode;//定義鏈式佇列元素型別
typedef struct queue
queue;//定義鏈式佇列型別
stack *stack_opr=null;
queue *queue_exp=null;
char ***pression[200],temp[20],opr[20];
int i,j,isnum;
stack *createstack() //建立乙個空堆疊(不帶頭結點的鏈棧)
int stackempty(stack *s) //推斷堆疊是否為空
if(s->top==null) return 1;
else return 0;}
node *makenode(char *item) //建立乙個堆疊結點,並使其資料域等於item
return pnode;}
void push(char *item,stack *s)//壓棧
void pop(char *item,stack *s)//出棧
}void clearstack(stack *s)//清空堆疊
}int stacksize(stack *s)//計算棧中結點的個數
return i;
}void stacktop(char *item,stack *s)//取棧頂元素,但不把棧頂元素出棧 }
queuenode *makequeuenode(char *item)//建立乙個鏈佇列結點。並使其資料域等於item
return pnode;
}queue *createqueue() //建立乙個空佇列。不帶頭結點
return q;
}int queueempty(queue *q)//推斷乙個佇列是否為空
void queueinsert(char *item,queue *q)//入隊
}void queuedel(char *item,queue *q)//出隊
}int queuesize(queue *q)//求佇列長度
return i;
}void clearqueue(queue *q)//清空佇列 }
void queuefront(char *item,queue *q)//取隊頭元素,但並不出隊
}void printqueue(queue *q)//輸出佇列中的元素 }}
void printstack(stack *s)//輸出堆疊中的元素 }}
int priorty(char opr)//求運算符號優先順序
}void caculate(queue *q)//計算字尾表示式的數值,要求最初參與運算的數值是整數
else } sprintf(num,"%f",fa); push(num,stack_num); } }pop(num,stack_num); printf("\n運算結果是:%s",num); } void translate(char ***pression[200]) if(isnum) else push(temp,stack_opr); break; case ')': while(stack_opr->top->item[0]!='(') pop(opr,stack_opr); break; } } printstack(stack_opr); printqueue(queue_exp); } while(!stackempty(stack_opr)) } int main()
表示式求值
程式的說明見清華大學出版社 資料結構 c語言版 include include define stack init size 40 define stackincrement 20 define ok 1 define false 0 typedef structs stack typedef st...
表示式求值
既然是表示式求值,自然需要在記憶體中儲存計算結果以及中間值。在 用c語言寫直譯器 一 中提過 變數要求是若型別,而 c 語言中的 view plaincopy to clipboardprint?in basic io.h define memery size 26 typedef enum var...
表示式求值
寫了乙個下午,各種糾結,各種問,終於搞明白了。但是自己還是想出來的一點東西的。很爽歪歪的,哈哈。先貼第一次的 include include include include include includeusing namespace std char data 7 7 int sign char ...