C 利用棧解決運算問題

2022-08-11 11:06:10 字數 850 閱讀 3789

2017-06-27 19:19:18

第一步需要將中綴表示式轉為字尾表示式。這步的轉化可以說是本題的核心。

主要的轉化手段是利用棧,有如下幾個規則:

int toint(stringin)

int priority(chara)}

bool isdig(char

a)//

保證每次入棧的符號的優先順序都比當前的棧頂元素要高,若此時棧頂的優先順序比入棧元素低或者等於的話,則需要出棧

//知道遇到比當前需要入棧元素優先順序高的為止

void midtopost(string

in,vector&vec)

else

else

if(in[i]==')'

)

s.pop();

}else

s.push(

in[i]);}}

++i;}}

}//清空棧

while(!s.empty())

}//字尾表示式的計算,數字進棧,符號將棧頂兩個元素出棧,運算後進棧

int calc(vector&vec)

else

if(!vec[i].compare("-"

))

else

if(!vec[i].compare("+"

))

else

if(!vec[i].compare("/"

))

else

}return

s.top();

}int

main()

利用棧解決迷宮問題

迷宮問題 如圖所示 從左上角出發,然後從下面出來。利用檔案讀寫的方式,讀取迷宮,然後利用棧,進行搜尋是否能夠找到出口,上下左右四個方向進行判斷,如果找不到,就回溯。pragma once pragma once include include define n 10 struct position ...

利用棧解決深度搜尋問題

include include struct pos int col pos int row,int col row row col col pos std stacks bool checkisaccess int a,int row size,int col size,pos cur 列座標不合...

利用位運算解決組合問題

求n個資料的組合 由數學知識,可以知道一共有2n個子集 用二進位制進行對照會非常直觀 子集空集 a1a0 a1 a0 a2a2,a0 a2,a1 a0,a1,a2 二進位制數 0 0 0 0 1 0 0 0 1 0 1 1 1 0 0 1 0 1 1 1 0 1 1 1 給出n個資料,問從這n個資料...