逆波蘭計數器 棧的實現

2021-08-18 22:26:09 字數 1253 閱讀 5224

又稱字尾計數器

用棧把原式寫為逆波蘭式子,儲存在陣列裡面並列印。

用棧根據逆波蘭式子的形式計算出結果。

以下**:

#include#include#include#define initsize 20	

#define increase 5

typedef struct stack stack;

void initstack(stack*s)

void push(stack*s, char c)

*(s->top++) = c;

}void pop(stack*s, char*e)

int getlen(stack*s)

void clearstack(stack*s)

//實現逆波蘭計數器(字尾計數器)

char b[100] = ;

typedef struct stack2 stack2;

int nibolan(stack*s, char*a)

} else if (a[i] == '+' || a[i] == '-')

push(s, a[i]);

}} else if (a[i] == '*' || a[i] == '/' || a[i] == '(')

else return 0;

i++;

} while (s->top!=s->base)

return 1;

}double result(stack2 s)

e = atof(num);

s.base[++s.top] = e;//進行入棧

} if (s.top > 0)

s.top--;

break;

default:

break;

}} i++;

} return s.base[s.top];

}int main() ,-1

};//對s2賦予初值

char a[100] = ;

printf("請輸入乙個算式:");

scanf("%s", a);

int iscorrect = nibolan(&s, a);

if (iscorrect)

else printf("輸入的算式有誤!\n");

printf("最後結果為:%.2lf\n", result(s2));

return 0;

}

逆波蘭式 棧實現

因為做二叉樹非遞迴的前後中遍歷,用到棧的方法。xpp說那就乾脆把四則運算,逆波蘭式 棧的實現做了。這是參考別人的程式寫的,注釋比較亂。而且這個是直接實現計算機計算的四則運算,沒有將逆波蘭的表示式列印出來。今天腰太酸了,明天改一改,把逆波蘭式列印出來噻333333.棧還有迷宮演算法是不是?現在腦子裡之...

單棧實現逆波蘭計算器

標頭檔案 define crt secure no warnings include include include include define error 0 define ok 1 define yes 1 define no 0 typedef int status typedef stru...

利用棧實現逆波蘭演算法

1.逆波蘭表示式?在我們的普遍認知中,計算的優先順序總是和 相關,形如 1 2 3 4 這樣的式子,我們看起來十分的清晰明了,但對計算機來說,它會進行很多次的判斷來確定乙個運算的優先順序。於是在很久很久之前就有乙個人發現,如果我們將上述算式寫成形如1 2 3 4 的形式,計算機判斷起來會顯得格外的快...