表示式求值

2021-09-07 17:29:35 字數 1956 閱讀 5842

#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 ...