“ 標(biāo)頭.h ” 文件如下:
//鏈棧的類模板
#include<cassert>
using namespace std;
template<typename T>class Stack;
template<typename T>class Node{ //鏈棧結(jié)點類模板
T info;
Node<T>*link;
public:
Node(T date = 0, Node<T>*next = NULL) {
info=data; //編譯錯誤C2563: 在形參表中不匹配
link=next; //編譯錯誤C2568: “=”無法解析函數(shù)重構(gòu)
}
friend class Stack<T>;
};
template<typename T>class Stack{ //鏈棧類模板,無頭結(jié)點鏈表
Node<T>*top; //棧頂指針
public:
Stack() { top = NULL; }
~Stack();
void Push(const T &data); //壓棧
T Pop(); //彈出
T GetTop(); //取棧頂元素
void MakeEmpty(); //清空棧
bool IsEmpty(){ return top == NULL; }
};
template<typename T>Stack<T>::~Stack() { MakeEmpty(); }
template<typename T>void Stack<T>::MakeEmpty() {
Node<T>*temp;
while (top != NULL) { temp = top; top = top->link; delete temp; }
}
template<typename T>void Stack<T>::Push(const T &data) {
top = new Node<T>(data, top);
}
template<typename T>T Stack<T>::Pop() {
assert(!IsEmpty());
Node<T>*temp = top;
T data = temp->info;
top = top->link; //丟棄棧頂結(jié)點
delete temp; //釋放棧頂結(jié)點
return data; //返回棧頂數(shù)據(jù)
}
template<typename T>T Stack<T>::GetTop() {
assert(!IsEmpty());
return top->info;
}
.cpp文件如下:
#include<iostream>
#include<cmath>
#include<cstdlib>
#include"標(biāo)頭.h"
using namespace std;
class Calculator { //計算器類
Stack<int>Nstack;
Stack<char>Ostack;
public:
Calculator(void) { };
void Cal(void);
void GetTwoNum(int &Num1, int &Num2);
void Compute(char Opr);
void Clear(void);
};
void Calculator::Clear() {
Nstack.MakeEmpty();
Ostack.MakeEmpty();
}
void Calculator::GetTwoNum(int &Num1, int &Num2) {
Num1 = Nstack.Pop();
Num2 = Nstack.Pop();
}
void Calculator::Compute(char Opr) {
int Num1, Num2;
if (Opr != '=')GetTwoNum(Num1, Num2);
switch (Opr) {
case '+':Nstack.Push(Num2 + Num1); break; //結(jié)果壓棧
case '-':Nstack.Push(Num2 - Num1); break;
case '*':Nstack.Push(Num2 * Num1); break;
case '/':Nstack.Push(Num2 / Num1); break;
case '=':cout << Nstack.Pop() << endl;
}
}
void Calculator::Cal() { //讀取用戶輸入(數(shù)字字符or操作字符)
bool b1 = true,b2 = true;
char ch1, ch2, str[50]; //ch1存新獲取的字符,ch2存從棧中取出的字符
int k = -1;
while (b2) {
cin >> ch1;
if (ch1 >= '0'&&ch1 <= '9') {
k++;
str[k] = ch1;//數(shù)字字符加入串中
}
else {
if (k >= 0) {
str[k + 1] = '\0';
Nstack.Push(atoi(str)); //數(shù)字字符加入數(shù)組棧中
k = -1;
}
switch (ch1) {
case'c':
Clear();
break;
case'+':
case'-': //+ - 優(yōu)先級最低,輸入新的= —號時,可直接彈出此時棧頂操作符進(jìn)行計算,并把結(jié)果壓棧
while (!Ostack.IsEmpty()) {
ch2 = Ostack.Pop();
Compute(ch2);
}
Ostack.Push(ch1);
break;
case'*':
case'/':
while (!Ostack.IsEmpty() && b1) {
ch2 = Ostack.Pop(); //棧頂運算符出棧
if (ch2 == '*' || ch2 == '/') //比較優(yōu)先級
Compute(ch2); //同是 * / 優(yōu)先級不高,先計算原來棧中已有的* or / 運算符
else {
Ostack.Push(ch2); //新的優(yōu)先級高 ,先把原棧中運算符壓回去
b1 = false;
}
}
Ostack.Push(ch1); //再把新運算符壓棧
b1 = true;
break;
case'=':
while (!Ostack.IsEmpty()) {
ch2 = Ostack.Pop();
Compute(ch2);
}
Compute(ch1);
break;
}
if (ch1 == 'z') b2 = false;
}
}
}
int main(){
Calculator Calcul;
cout << "請輸入四則運算式:" << endl;
Calcul.Cal();
getchar();
return 0;
}
編譯錯誤圖片:
![圖片描述][1]
[1]: /img/bVbaCGz
北大青鳥APTECH成立于1999年。依托北京大學(xué)優(yōu)質(zhì)雄厚的教育資源和背景,秉承“教育改變生活”的發(fā)展理念,致力于培養(yǎng)中國IT技能型緊缺人才,是大數(shù)據(jù)專業(yè)的國家
北大青鳥中博軟件學(xué)院創(chuàng)立于2003年,作為華東區(qū)著名互聯(lián)網(wǎng)學(xué)院和江蘇省首批服務(wù)外包人才培訓(xùn)基地,中博成功培育了近30000名軟件工程師走向高薪崗位,合作企業(yè)超4
中公教育集團(tuán)創(chuàng)建于1999年,經(jīng)過二十年潛心發(fā)展,已由一家北大畢業(yè)生自主創(chuàng)業(yè)的信息技術(shù)與教育服務(wù)機(jī)構(gòu),發(fā)展為教育服務(wù)業(yè)的綜合性企業(yè)集團(tuán),成為集合面授教學(xué)培訓(xùn)、網(wǎng)
達(dá)內(nèi)教育集團(tuán)成立于2002年,是一家由留學(xué)海歸創(chuàng)辦的高端職業(yè)教育培訓(xùn)機(jī)構(gòu),是中國一站式人才培養(yǎng)平臺、一站式人才輸送平臺。2014年4月3日在美國成功上市,融資1
浪潮集團(tuán)項目經(jīng)理。精通Java與.NET 技術(shù), 熟練的跨平臺面向?qū)ο箝_發(fā)經(jīng)驗,技術(shù)功底深厚。 授課風(fēng)格 授課風(fēng)格清新自然、條理清晰、主次分明、重點難點突出、引人入勝。
曾工作于聯(lián)想擔(dān)任系統(tǒng)開發(fā)工程師,曾在博彥科技股份有限公司擔(dān)任項目經(jīng)理從事移動互聯(lián)網(wǎng)管理及研發(fā)工作,曾創(chuàng)辦藍(lán)懿科技有限責(zé)任公司從事總經(jīng)理職務(wù)負(fù)責(zé)iOS教學(xué)及管理工作。
精通HTML5和CSS3;Javascript及主流js庫,具有快速界面開發(fā)的能力,對瀏覽器兼容性、前端性能優(yōu)化等有深入理解。精通網(wǎng)頁制作和網(wǎng)頁游戲開發(fā)。
具有10 年的Java 企業(yè)應(yīng)用開發(fā)經(jīng)驗。曾經(jīng)歷任德國Software AG 技術(shù)顧問,美國Dachieve 系統(tǒng)架構(gòu)師,美國AngelEngineers Inc. 系統(tǒng)架構(gòu)師。