小发现,如何高级的顺序输出,逆序输出整数的每一位(栈,队列)

当我还是初学者的时候,我经常思考有没有比慢慢求每一位数字然后考虑正序,逆序输出要快的办法...长期琢磨,必有所获!

我刚学数据结构的时候还没意识到栈,队列还能这样用,虽然说有点杀鸡用牛刀的感觉,但是这样确实可以加深对栈和队列理解与运用。

开始:

比如输入1234000,顺序输出为1 2 3 4 0 0 0,逆序输出为0 0 0 4 3 2 1

我们知道每次获取最后一位数字的难度是最低的,所以我们就每次将最末尾的数字存放到栈或者队列里就行了。

对于栈,如果按照上面的方式存储就是顺序输出,栈是先进后出,进入就是0 0 0 4 3 2 1 ,而每次弹栈就是输出最上面的那个,就是1 2 3 4 0 0 0,每次弹栈之后删除栈顶元素就行了

对于队列,如果按照上面的方式存储就是逆序输出,队列是先进先出,进入就是0 0 0 4 3 2 1,而每次队头先出来,就是0 0 0 4 3 2 1,每次出队之后删除队首元素就行了

代码实现:

cpp 复制代码
#include<iostream>
#include<stack>//调用栈的头文件
#include<queue>//调用队列的头文件
using namespace std;
int main(){
	stack<int> s;//创建一个栈
	cout << "栈" << endl; 
	int n;
	cin >> n;//输入数字
	while(n>0){
		s.push(n%10);//压栈(存放元素)push()
		n /= 10;
	}
	while(!s.empty()){//判空,如果不是空的就继续输出
		cout << s.top() << " ";//输出栈顶元素,top()
		s.pop();//删除栈顶元素,pop()
	}
	cout << endl << "队列" << endl;
	queue<int> q;//创建一个队列
	cin >> n;
	while(n>0){
		q.push(n%10);//进队
		n/=10;
	}
	while(!q.empty()){//判空,如果不是空的就继续输出
		cout << q.front() << " ";//输出队首元素
		q.pop();//删除队首元素
	}
	return 0;
} 

以上就是我对灵光乍现的代码实现 ,芜湖芜湖~~~

到这里就结束啦!!!

欢迎小伙伴们评论区讨论,提问。

我是荒古前,期待你的关注~~~

~~~完结撒花✌y( •̀ ω •́ )y✌~~~

相关推荐
Zsy_0510031 小时前
【数据结构】二叉树OJ
数据结构
快乐zbc1 小时前
【C++ 基础】:给定一个指针 p,你能判断它是否指向合法的对象吗?
c++
sulikey1 小时前
C++类和对象(下):初始化列表、static、友元、内部类等核心特性详解
c++·static·初始化列表·友元·匿名对象·内部类·编译器优化
oioihoii2 小时前
C++网络编程:从Socket混乱到优雅Reactor的蜕变之路
开发语言·网络·c++
程序员东岸2 小时前
《数据结构——排序(中)》选择与交换的艺术:从直接选择到堆排序的性能跃迁
数据结构·笔记·算法·leetcode·排序算法
程序员-King.3 小时前
day104—对向双指针—接雨水(LeetCode-42)
算法·贪心算法
笨鸟要努力3 小时前
Qt C++ windows 设置系统时间
c++·windows·qt
牢七3 小时前
数据结构11111
数据结构
神仙别闹3 小时前
基于C++实现(控制台)应用递推法完成经典型算法的应用
开发语言·c++·算法
Ayanami_Reii3 小时前
进阶数据结构应用-一个简单的整数问题2(线段树解法)
数据结构·算法·线段树·延迟标记