STL stack练习
2023-12-20 23:04:58
输入一个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是否为0
if(!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;
}
文章来源:https://blog.csdn.net/qq_43855258/article/details/135107605
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!