上一篇主題 :: 下一篇主題 |
發表人 |
內容 |
neilshih Neilshih專區 板主
註冊時間: 2007-06-03 文章: 33 來自: 地球 20.01 果凍幣
|
發表於: 2007-6-6, PM 10:05 星期三 文章主題: C中序轉後序(infix to posfix) |
|
|
代碼: | #include <stdio.h>
#include <stdlib.h>
int postfix(char*);
int priority(char);
void push(char c);
void pop(void);
char stack[80] = {'\0'};
char output[80] = {'\0'};
int top = 0;
int x = 0;
main(){
char input[80];
printf("Please enter infix sentence:");
scanf("%s", input);
postfix(input);
puts(output);
system("PAUSE");
return 0;
}
int postfix(char* infix){
int i = 0;
char op;
while(1){
op = infix[i];
switch(op){
case '\0':
while(top > 0){
output[x++] = stack[top];
pop();
}
printf("\n");
return 0;
case '(':
push(op);
break;
case '+': case '-': case '*': case '/':
while(priority(stack[top]) >= priority(op)){
output[x++] = stack[top];
pop();
}
push(op);
break;
case ')':
while(stack[top] != '('){
output[x++] = stack[top];
pop();
}
pop();
break;
default:
output[x++] = op;
break;
}
i++;
}
}
int priority(char op){
int p;
switch(op){
case '+': case '-':
p = 1;
break;
case '*': case '/':
p = 2;
break;
default:
p = 0;
break;
}
return p;
}
void push(char c){
if(top < 80)
stack[++top] = c;
else
printf("error,stack full");
}
void pop(void){
if(top > 0)
top--;
else
printf("error, cant pop");
} |
|
|
回頂端 |
|
|
話術師 對這略感興趣的新人
註冊時間: 2007-06-02 文章: 17 來自: 耗電量很高的地方 0.00 果凍幣
|
發表於: 2007-6-6, PM 11:25 星期三 文章主題: |
|
|
程式碼加上註解吧
這樣比較容易他人觀看 _________________ 人生真累呀 |
|
回頂端 |
|
|
chumi 稍嫌羞澀的路人
註冊時間: 2008-04-19 文章: 1
0.00 果凍幣
|
發表於: 2008-4-19, PM 8:51 星期六 文章主題: |
|
|
while(1)這邊我看不太懂,可否解釋一下呢 |
|
回頂端 |
|
|
yag Site Admin
註冊時間: 2007-05-02 文章: 689
2704.11 果凍幣
|
發表於: 2008-4-19, PM 11:49 星期六 文章主題: |
|
|
chumi 寫到: | while(1)這邊我看不太懂,可否解釋一下呢 |
while(1)就是無限迴圈
直到return 0;時才會跳出
在c++中,布林代數可用數字代替
0代表false,非0代表true
一般來說,會用1來代表true
但如果你喜歡,要用2、3、4、5、6…都行
所以while(1)就是while(true)
而while迴圈的條件式必須為false時才會中止
true永遠不為false
因此while會永遠重複執行
這就叫做無限迴圈 |
|
回頂端 |
|
|
babu61509 散播福音的祭司
註冊時間: 2007-08-26 文章: 142
681.01 果凍幣
|
發表於: 2008-4-20, PM 5:49 星期日 文章主題: |
|
|
這個應該是PO 到 資料結構 討論區吧0 .0?
---------------------------------------------
我在想...會不會有人不知道中序和後序是瞎咪吧XD?
剛好最近老師在教這個...不然我也不知道這是瞎咪- .- _________________ 已經畢業了!! |
|
回頂端 |
|
|
|