zoukankan      html  css  js  c++  java
  • 栈和队列

    卡片游戏

    桌面上有一叠牌,从第一张牌开始从上往下一次编号为1-n.当至少还剩下两张牌时进行一下操作:把第一张牌扔掉,然后把新的第一张放到整叠牌的最后。输入n,输出每次扔掉的牌,以及最后剩下的牌。

    样例输入:7

    样例输出:1 3 5 7 4 2 6

     1 #include "stdafx.h"
     2 #include<iostream>
     3 using namespace std;
     4 
     5 int _tmain(int argc, _TCHAR* argv[])
     6 {
     7 int num[100];
     8 int inputNum;
     9 cin>>inputNum;
    10 for(int i = 1;i<=inputNum;++i)
    11 {
    12     num[i-1]=i;
    13 }
    14 int renum=0;//用于记录输出字数
    15 int curnum=0;
    16 int len = inputNum-1;
    17 while(renum!=inputNum)
    18 {
    19     cout<<num[curnum]<<" ";
    20     curnum++;
    21     len++;
    22     num[len]=num[curnum];
    23     curnum++;
    24     renum++;
    25 }
    26 return 0;
    27 }

    运行结果没有错误,但是存在bug.像用curnum记录当前的下标. 最后会达到2倍inputNum的大小,也就是说可能运行到后期,会读写非法内存,除非把数组空间开大或者才去一种称为循环队列的技术.

     1 #include "stdafx.h"
     2 #include<iostream>
     3 #include<queue>
     4 using namespace std;
     5 
     6 queue<int> q;
     7 int _tmain(int argc, _TCHAR* argv[])
     8 {
     9     int n;
    10     cin>>n;
    11     for(int i = 0;i!=n;++i) q.push(i+1);
    12     while(!q.empty())
    13     {
    14         cout<<q.front()<<endl;
    15         q.pop();
    16         if(q.empty())
    17         {
    18             break;
    19         }
    20         q.push(q.front());
    21         q.pop();
    22     }
    23 return 0;
    24 }

    这就是STL队列.

  • 相关阅读:
    参考Shiro的自定义基于Spring的AOP横切模式
    Spring-@Value获取配置文件内容
    BeanPostProcessor Bean实例的初始化前后的自定义修改
    两台Linux主机之间免密scp复制文件及远程启动关闭Tomcat
    Shiro Realm领域
    test
    Linux 安装Oracle数据库
    Shiro Authorizer授权器
    HDU 1079 Calendar Game (博弈)
    MooFest POJ
  • 原文地址:https://www.cnblogs.com/crazycodehzp/p/3519866.html
Copyright © 2011-2022 走看看