棧(一)利用棧計算表示式

2021-08-08 22:10:00 字數 1244 閱讀 3089

整理了一下使用資料結構這本書上的內容

#pragma once

#includeusing namespace std;

templateclass sq_stack ;

//建立容量為mm的空棧

templatesq_stack::sq_stack(int m)

//析構函式

templatesq_stack::~sq_stack()

//順序輸出棧頂指標與棧中元素

templatevoid sq_stack::prt_sq_stack()

return;

}//檢測順序棧狀態

templateint sq_stack::flag_sq_stack()

//入棧

templatevoid sq_stack::ins_sq_stack(t data)

s[top] = data;

top++;

return;

}//退棧

templatet sq_stack::del_sq_stack()

top--;

return s[top];

}//讀取棧頂元素

templatet sq_stack::read_sq_stack()

return s[top - 1];

}//int main()

//

#include"sq_stack.h"

double shishu(char*s, int *k)

else//處理小數點之前的資料

}else

flag = 0;

c = s[*k];

} return x;

}//計算運算子的優先順序

int pp(char c)

return k;

}int main()

else if (c == 0&&sp.read_sq_stack() == 0)

flag = 0;

else if (c == ')' && (sp.read_sq_stack() == '('))

else if (pp(c) <=pp(sp.read_sq_stack()))

sv.ins_sq_stack(x);

} c = s[k];

} cout << s << "=" << sv.read_sq_stack() << endl;

}

利用棧計算字尾表示式

字尾表示式又稱作逆波蘭式,操作符在運算數的後面,所以叫做字尾表示式。例如 1 2 3的字尾表示式是 1 2 3 可以 2 3 看作乙個運算數a,1 a 也符合運算數 運算數 操作符的格式。的特殊處理 因為要處理大於9的數,所以要在每個數和操作符後加上空格,將相鄰的數分隔開。字尾表示式以字串的形式存在...

計算表示式 棧

問題 現在有乙個合法的二進位制表示式,請計算出該表示式的值 input 輸入一行字串,表示乙個二進位制表示式。長度不超過 100,000 ouput 輸出表示式的值 input output 0 1 0 1 1 0 1 1 兩種方法 1 被動 遇到右括號再進行運算,直至左括號 include inc...

用棧計算表示式

首先宣告我們的表示式 expression 只是簡單的四則運算,再加上小括號.運算元operand,操作符operator 如果直接給出字尾表示式 postfix,也叫逆波蘭式 是最容易計算的,這種表示式中已經不含括號.方法 遇到運算元時壓入棧中 遇到操作符時從棧中彈出兩個元素進行此運算,再將運算結...