中綴到字尾的轉換 棧實現

2021-08-18 22:35:44 字數 1358 閱讀 4808

#include 

#include

#include

#include

/*2018.4.4 棧的鍊錶實現

*/stack initial_stack()

int isempty(stack s)

void dispose_stack(stack s)

}void push(stack s,elementtype x)

void pop(stack s)

free(p);

}elementtype top(stack s)

else

printf("isempty!");

exit(0);

}int priority(char oprd)

void infix_to_post()

else

if(c[i]=='(') //注意 如果是左括號無條件壓 相當於是最高優先順序 但是pop的時候 當時是最低優先順序 任何時候都不出 只有當前讀的是右括號才出來

else

if(c[i]==')')

pop(oprd);

}else

push(oprd,c[i]);

//printf("alreading puch %c",c[i]);}}

while(!isempty(oprd))

}int main()

標頭檔案

#ifndef stack_head_h_included

#define stack_head_h_included

typedef struct node *ptrtonode;

#define elementtype char

typedef struct node *stack;

int isempty(stack s);

stack initial_stack();

void dispose_stack(stack s);

void push(stacks , elementtype x);

void pop(stack s);

elementtype top(stack s);

#endif // stack_head_h_included

struct node;

樣例:

a+b*c+(d*e+f)*g

abc*+de*f+g*+

process returned 0 (0x0) execution time : 17.120

spress any key to continue.

中綴到字尾的轉換

我們平常所寫的標準形式的表示式叫做中綴式,我們可以用棧來把他轉換成字尾式。假設只允許操作 並堅持普通的優先順序發則。還要假設表示式是合法的。如將表示式 a b c d e f g轉換成字尾式是a b c d e f g 思路 當讀到乙個運算元時,立即把他放到輸出中。而把操作符放進乙個棧中。當遇到左括...

通過棧實現中綴表示式到字尾表示式的轉換

在程式設計的世界中資料結構和演算法總是形影不離,難捨難分的.棧作為一種常見的資料結構 抽象資料型別 在程式的世界中有非常的意義.在電腦科學中,棧是一種抽象資料型別 adt abstract data type 用作資料的集合表示.棧有兩個主要的操作 簡單來說,棧就是乙個 先出 lifo last i...

資料結構 中綴到字尾的轉換

問題描述 請編寫程式將乙個中綴表示式轉換為字尾表示式。輸入僅一行,是乙個中綴表示式。輸入的符號中只有這些基本符號 0123456789 並且不會出現形如2 3的格式,所有數字都是個位數,表示整除運算。輸出僅一行,是轉換後的字尾表示式。數字之間 運算子之間 數字和運算子之間都用乙個空格隔開 參見樣例 ...