#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的格式,所有數字都是個位數,表示整除運算。輸出僅一行,是轉換後的字尾表示式。數字之間 運算子之間 數字和運算子之間都用乙個空格隔開 參見樣例 ...