整理了一下使用資料結構這本書上的內容
#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,也叫逆波蘭式 是最容易計算的,這種表示式中已經不含括號.方法 遇到運算元時壓入棧中 遇到操作符時從棧中彈出兩個元素進行此運算,再將運算結...