棧學習中必做題--中綴表示式轉換成字尾表示式(字尾表示式也叫逆波蘭表示式)
列如(a+b)--ab+
首先用順序儲存來實現:
#include#includechar stack[100]=;
int compare(char s1,char s2);
int isblock();
void pop(int t);
void push(char s,int i);
int isnum(char s);
int main()
; int i,t=0;
gets(str);
for(i=0;str[i]!='\0';i++)
push(str[i],++t);
}else if(compare(stack[t],str[i])==0)
pop(t--);}}
}if(t>=0)
return 0;
}int isnum(char s)
void push(char s,int i)
void pop(int t)
int isblock()
int compare(char s1,char s2)
用教科書般的棧來實現中綴到字尾
#define stacksize 20
typedef struct
sqstack;
void initstack(sqstack *s)
void push(sqstack *s,char e)
*(s->top)=e;
s->top++;
}void pop(sqstack *s,char *e)
s->top--;
*e=*(s->top);
}int stacklen(sqstack s)
int main()
}if(')'==c)//右括號,彈出元素,彈到左括號為止
}else if(c=='+'||c=='-')//+和-的優先順序最低,只要是這兩個,棧在非空時就要一直彈元素出來,彈到出現括號和空棧
else
else
}while(stacklen(s)&&'('!=e);
push(&s,c);//不要忘記要把輸入的元素壓棧}}
else if(c=='*'||c=='/'||c=='(')//優先順序最高,必修壓棧
else if(c=='\n')
else
scanf("%c",&c);
}while(stacklen(s))//棧不為空時
return 0;
}
逆波蘭計算器:
列如:輸入:9 3 1 - 3 * + 10 2 / +
輸出為:20
#define stacksize 20
#includetypedef struct
sqstack;
void initstack(sqstack *s)
void push(sqstack *s,double e)
*(s->top)=e;
s->top++;
}void pop(sqstack *s,double *e)
s->top--;
*e=*(s->top);
}int stacklen(sqstack s)
int main()
scanf("%c",&c);
if(c==' ')
}switch(c)
else
break;
}scanf("%c",&c);
}pop(&s,&d);
printf("結果為:%lf\n",d);
return 0;
}
邁向全棧開發學習 3
久違的一文了,有乙個多月沒有更新我這個博文了,太懶了 今天突然想起來就把這一文寫了。上回簡單說了下es6的語法,這回我就做了乙個sass的綜合專案練習,我用sass寫了乙個頁面。只是乙個頁面布局的練習,沒怎麼運用到js。先貼個 先 1 require sass style.scss 2 import...
3 棧的應用
棧的應用很廣,函式的呼叫的底層實現,和實現表示式值得計算,可以實現括號的匹配,和瀏覽器的前進和後退的實現。import org.junit.test import com.ypl.demo.arraystack 遇到數字直接壓人棧中。左括號在進入棧中之前元素優先順序最高。左括號在進人棧後優先順序最低...
3 棧的操作
實現方法 1 構建乙個節點結構體只含有指標域 2 構建乙個鍊錶結構體,包含頭節點和鍊錶的大小 3 使用者使用時需要預留出指標域的記憶體空間。節點結構體 typedef struct linknode linknode 鍊錶結構體 typedef struct liststack liststack ...