要求輸入乙個以字串方式儲存的表示式,利用棧,能夠計算表示式的值。表示式中允許的運算子為+,-,*,/,%,(,)。
函式原型: int calvalue(char *s); s儲存表示式,函式返回值為表示式的值,表示式中的運算元為正整數。
輸入: 15+(3-5)*7
輸出:1
5+7*(25-12)/2-3
47
//
// created by legends丶hu on 2020/2/4.
//#include #include #include //#include "stack.h"
using namespace std;
const int stacksize = 100;
templateclass stack
};templatevoid stack::push(t x)
templatestack::stack()
templatet stack::pop()
templatet stack::gettop()
templateint stack::empty()
//3*(4+2)/2-5
int compare(char c)
}int compute(int a, int b, char ch)
return res;
}int midcalvalue(char *s)
opnd.push(num);
} else
} else
optr.push(s[i]);
}i++;}}
char ch;
while ((ch = optr.pop()) != '#')
return opnd.pop();
}void convertpost(char *str,char *res)
res[index++]=' ';
} else else if (str[i] == ')')
s.pop();
} else
s.push(str[i]);
}i++;}}
char ch = s.gettop();
while ((ch = s.pop()) != '#')
res[index] = '\0';
}int postcalvalue(char *s)
stack.push(num);
continue;
} else if(s[i] != ' ')
}return stack.pop();
}//3*(4+2)/2-5
//1 2 + 3 4 - *
//(1+1)*(3-4)
//5+7*(25-12)/2-3%3
int main()
資料結構C 版 王紅梅 OJ習題
迴圈佇列中利用頭尾指標front rear之間的關係實現隊滿 當隊中僅剩乙個空閒單元時即視為隊滿 隊空條件判斷。迴圈佇列類的定義 部分實現及主函式 如下 勿改動 請在此基礎上補充實現佇列類中未實現的相關演算法 include include using namespace std const int...
資料結構C 版 王紅梅 OJ習題
單向迴圈錶類的定義及部分函式和main函式 請勿改動 如下,請完成length insert reverse和displist演算法。單向迴圈鍊錶類 template class linklist 建構函式 template linklist linklist 析構函式 釋放鍊錶各個結點所佔記憶體單...
大學資料結構(c 版) 王紅梅版 疑惑 第二章
第二章本章的基本內容是 1 線性表的邏輯結構2 線性表的順序儲存及實現 3 線性表的鏈結儲存及實現4 順序表和煉表的比較5 線性 表的其他儲存方法 下面是定義的摘抄 delete 前置條件 表已存在 輸入 刪除位置i 功能 刪除表中的第i個元素 輸出 若刪除成功,返回被刪元素,否則丟擲異常 後置條件...