用棧實現自定義算術運算
對應運算:
且有規則 2@3$4=2*(3$4)。
實現要點:
1)定義數字棧和符號棧;
2)壓棧操作是棧頂指標先加1,再賦值,出棧操作時先賦值,棧頂指標再減1;
3)用switch語句實現算術運算和優先規則定義要簡單些;
4)主函式中,對每個數字進行數字棧入棧操作,根據運算子的優先順序,對符號棧分別進行入棧(後乙個運算子的優先順序比前乙個高),出棧(優先順序相等),計算後入棧(後乙個運算子的優先順序比前乙個低)。注意,只有在符號入棧和出棧操作時(前兩種情況)才對向後移動指標,如果不這樣會導致第三種情況計算後符號棧中低優先順序的運算不會進行。
#includeusing namespace std;
typedef struct _num_stack
num_stack;
typedef struct _char_stack
char_stack;
void init(num_stack *&num_s,int size_num,char_stack *&char_s,int size_char)
void num_push(num_stack *head,int key)
void num_pop(num_stack *head,int *key)
void char_push(char_stack *head,char c)
int operate(int i,char c,int j)
return result;
}char precede(char s,char t)
// couttop];
}int gettopnum(num_stack *my)
int main()
// cout<':
char_pop(my_char_stack,&theta);
num_pop(my_num_stack,&j);
num_pop(my_num_stack,&i);
cout<<"運算 "<
用自定義的棧實現算術表示式(字尾表示式)求值
include include using namespace std define max 88 luosansui s sequential stack 構建乙個棧的資料型別 struct stack 定義運算元優先順序 void priority char singlesym,int p 判斷...
c 自定義棧
棧的原理是先進後出。佇列是先進先出。棧像乘坐電梯,後進的先出去。佇列就是排隊。實現 public class mystack get public t stkarr get public int maxsize setelse public mystack int maxsize 出棧 public...
使用自定義動態陣列實現棧
棧介面定義 public inte ce stack 實現stack這個介面 1 入棧 2 出棧 3 檢視棧頂元素 使用動態陣列實現棧這種線性資料結構 棧的應用 undo 撤銷 程式呼叫的系統棧,括號匹配 棧頂元素反映了在巢狀的層次關係中,最近的需要匹配的元素 棧對應的操作是陣列的子集 只能從一端新...