1. 实现2/8/16进制的转换
String multibaseOutput(int num, int b) //主函数赋值数据和进制
{
string digitChar =“0123456789ABCDEF”, numStr =“ ”;
//首先先定义一个字符串数组和一个空的字符串以便下边使用
stack<char> stk; //定义一个字符类型的新栈
//做一个循环就是用数据除以进制
do{
stk.push(digitChar[num % b]);//取余数在字符串数组里找相应的字符组成进制表达式并且放在栈里
num /= b;//循环进行的条件,得到的值
} while (num != 0);//在值为0前进行循环以便得到进制数
while (!stk.empty())//要把栈里的东西全部放进去
{
numstr += stk.top(); //以叠加的方式放入栈里
stk.pop();//放入一个删掉一个
}
return numStr;
}
2. 删除栈中元素
Template<typename>
Bool uncouple(stack<T> &s, const T &target) //利用bool判断
{
stack<T> tmpStk;//新建一个栈
bool foundTarget = true; //命令如果找到要删除的值为true
while (!s.empty() && s.top() != target)
//如果s栈不为空 并且 没有找到删除的值的时候执行循环
{
tmpstk.push(s.top()); //向新建的栈里放入s里遍历过但不是要找的的数值
s.pop(); //删除找过的s栈里的数据,找s栈下一个数据
}
if (!s.empty()) //如果上边的s栈结束前找到了就直接删除
s.pop();
else //如果上边的循环结束还没有找到就输出找不到删的值
foundTarget = false;
while (!tmpStk.empty()) //上边的循环已经完成删除的动作,下边的就是需要把那些不需要删除的原始数据放回
{
s.push(tmpStk.top()); //向s里放回
tmpStk.pop(); //删除s里的元素
}
return foundTarget;
}