C++STL之stack栈容器 - 数据结构教程 - C语言网C++STL之stack栈容器1.再谈栈回顾一下之前所学的栈,栈是一种先进后出的数据结构,而实现方式需要创建多个结构体,通过链式的方式进行实现,这是标准的栈的思路,而在STL中栈可以以更为简单的方式实现。2.头文件头文件#incl……https://www.dotcpp.com/course/113
输入一个10进制正整数,输出它所对应的八进制数。
//十进制转八进制
//可以用栈来存储取模结果(先入后出)#include<iostream>
#include<stack>
using namespace std;void DEC2OCT(const int& DEC, stack<int>& OCT){int dec = DEC;while(dec){OCT.push(dec%8);dec = dec / 8;}
}// stack属于特殊的数据结构,没有迭代器
// 只能通过不断pop->访问top,实现数据读取
void show_stack(stack<int>& mystack){stack<int> tmp(mystack);//拷贝构造 深拷贝while(!tmp.empty()){cout<<tmp.top();tmp.pop();}cout<<endl;
}int main()
{int dec;stack<int> res;while(cin){cin>>dec;}DEC2OCT(dec, res);show_stack(res);return 0;
}
将十进制整数转换成二进制数
//十进制转二进制
//可以用栈来存储取模结果(先入后出)#include<iostream>
#include<stack>
#include<vector>
using namespace std;void DEC2BIN(const int& DEC, stack<int>& BIN){int dec = DEC;//判断dec是否为负数bool flag=0;if(dec<0){flag = 1;dec = -dec;}//判断dec是否为0if(!dec){BIN.push(dec);}while(dec){BIN.push(dec%2);dec = dec / 2;}//加负号if(flag){int val = BIN.top();BIN.pop();BIN.push(-val);}
}void show_stack(stack<int>& mystack){while(!mystack.empty()){cout<<mystack.top();mystack.pop();}cout<<endl;
}int main()
{int dec;vector<int> input;stack<int> res;while(cin>>dec){input.push_back(dec);}for(auto it=input.begin(); it!=input.end(); it++){dec = *it;DEC2BIN(dec, res);cout<<dec<<"-->";show_stack(res);}return 0;
}