数据结构小知识
来源:互联网 发布:ubuntu deb 安装 编辑:程序博客网 时间:2024/04/27 15:56
卡片游戏:
桌上有一叠纸牌,从第一张牌(即位于顶端的牌)开始从上往下依次编号为1~n。当至少还剩两张牌时进行一下操作:把第一张牌扔掉,然后把新的第一张放到整叠牌的最后。
输入n,输出每次扔掉的牌,以及最后剩下的牌。
样例输入:9
样例输出:1 3 5 7 9 4 8 6 2
通过这个例子可以演示C++中队列的机制
/****C++队列的使用*****/#include<iostream>#include<queue>using namespace std;queue<int>q; //建立队列int main(){ int n; cin>>n; for(int i=0;i<n;i++) q.push(i+1); //初始化队列 while(!q.empty()) { cout<<q.front()<<" ";//打印队首元素 q.pop(); //抛弃队首元素 q.push(q.front()); //把新的队首元素加入队尾 q.pop(); //抛弃队首元素 } return 0;}程序运行结果:
队列和栈是数据结构中很重要的数据存储体,下面演示队列和栈的一个最简单的区别:
/****演示队列和栈的区别***/#include<iostream>#include<stack>#include<queue>using namespace std;stack<int>s; //建立栈queue<int>p; //建立队列int main(){ int n; cin>>n; for(int i=1;i<=n;i++) {s.push(i);p.push(i);}//初始化队列和栈 for(int i=1;i<=n;i++) { cout<<s.top()<<" ";//输出栈 s.pop(); }cout<<endl; for(int i=1;i<=n;i++) { cout<<p.front()<<" ";//输出队列 p.pop(); } return 0;}程序运行结果:
在编写程序时,调试少不了。而我们如何获得调试用的数据呢?显然,人为的输入一些测试数据显然效率低下,
这里引入C语言中的随机数发生器,用来获得海量的测试数据。
/****演示随机数发生器***/#include<iostream>#include<cstdlib> //rand()和srand()需要#include<ctime> //time()需要的头文件using namespace std;int main(){ int m,r=10;//r是随机数的上界,且随机数不能等于r double n; srand(time(0));//只在且只能在函数开始初始化一次 for(int i=0;i<6;i++)//产生6组,每组10个随机数 { for(int j=0;j<10;j++) //产生10个随机数 { n=(double)rand()/RAND_MAX;//产生0-1之间的小数 m=(int)(n*(r-1)+0.5);//确保生成的随机数不会大于10 cout<<m<<" "; } cout<<endl; } return 0;}程序结果:
0 0
- 数据结构小知识
- 【数据结构与算法】【小知识】【word】 总结
- 数据结构的一些小知识(纯理论)
- 数据结构知识
- 数据结构知识
- [数据结构]数据结构知识
- 小知识
- 小知识
- 小知识
- 小知识
- 小知识
- 小知识
- 小知识
- 小知识
- 小知识
- 小知识
- 小知识
- 小知识
- QML的Key事件(Keys)详解
- 百度投资UBER 车联网之路取其轻
- myeclipse异常:An internal error occurred during
- IO--Reader
- 酒店智能门锁的秘密
- 数据结构小知识
- LeetCode:Populating Next Right Pointers in Each Node
- hibernate 表名大小写,mysql表名忽略大小写
- STL的remove函数和list的remove成员函数
- Eclipse常用快捷键
- 关于mysql执行效率优化注意事项及要点(上)
- 简单优化:Zipalign
- Android OTA 升级(一): 编译升级包
- 2014年让人脑洞大开的智能产品