最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網 會員登陸 & 注冊

史上最強最細膩的linux嵌入式C語言學習教程【李慧芹老師】

2023-07-26 22:58 作者:fermatas  | 我要投稿

?
7.棧和隊列的應用-計算器實例2 P102 - 30:34
?

101 - 102 課堂代碼

``` C

#include <stdio.h>

#include <stdlib.h>

#include <ctype.h>

#include <string.h>


#include "sqstack.h"


static void compute(sqstack *snum, datatype *op) {

datatype n1, n2, n;

st_pop(snum, &n2);

st_pop(snum, &n1);

switch(*op) {

case '+':

n = n1 + n2;

break;

case '-':

n = n1 - n2;

break;

case '*':

n = n1 * n2;

break;

case '/':

n = n1 / n2;

break;

default:

exit(1);

}

st_push(snum, &n);

}


void deal_bracket(sqstack *snum, sqstack *sop) {

datatype old_op;

st_top(sop, &old_op);

while(old_op != '(') {

st_pop(sop, &old_op);

compute(snum, &old_op);

st_top(sop, &old_op);

}

st_pop(sop, &old_op);

}


static int get_pri(int op) {

switch(op) {

case '(':

return 0;

case '+':

case '-':

return 1;

case '*':

case '/':

return 2;

}

}


void deal_op(sqstack *snum, sqstack *sop, int op) {

datatype old_op;

if(st_isempty(sop) || op == '(') {

st_push(sop, &op);

return;

}


st_top(sop, &old_op);

if(get_pri(op) > get_pri(old_op)) {

st_push(sop, &op);

return;

}

while(get_pri(op) <= get_pri(old_op)) {

st_pop(sop, &old_op);

compute(snum, &old_op);

if(st_isempty(sop))

break;

st_top(sop, &old_op);

}

st_push(sop, &op);

}


int main() {

int i = 0;

char str[] = "(11+3)*2-5";

sqstack *snum, *sop;

int value = 0;

int flag = 0;


snum = st_create();

if(snum == NULL)

exit(1);


sop = st_create();

if(sop == NULL)?

exit(1);

while(str[i] != '\0') {

if(isdigit(str[i])) {

value = value * 10 + str[i] - '0';

flag = 1;

} else {

if(flag) {

st_push(snum, &value);

flag = 0;

value = 0;

}

if(str[i] == ')') {

deal_bracket(snum, sop);

} else {

deal_op(snum, sop, str[i]);

}

}

i++;

}

if(flag)

st_push(snum, &value);


int old_op;

while(!st_isempty(sop)) {

st_pop(sop, &old_op);

compute(snum, &old_op);

st_top(sop, &old_op);

}

int res;

st_top(snum, &res);

printf("result: %d\n", res);


st_destory(snum);

st_destory(sop);

exit(0);

}

```

史上最強最細膩的linux嵌入式C語言學習教程【李慧芹老師】的評論 (共 條)

分享到微博請遵守國家法律
永和县| 运城市| 平潭县| 三台县| 威宁| 广丰县| 丹巴县| 扎鲁特旗| 城步| 高淳县| 盱眙县| 怀远县| 昌乐县| 玉山县| 东山县| 句容市| 潜山县| 故城县| 中超| 陇南市| 云安县| 舞钢市| 宁波市| 罗山县| 富裕县| 台南县| 泸溪县| 绍兴县| 乡宁县| 宜春市| 满城县| 砚山县| 乐平市| 玉屏| 长沙市| 介休市| 临汾市| 锦屏县| 彰武县| 吴川市| 江华|