记住:!!!栈用完之后,在下次使用的时候一定要初始化!!花费了我一上午的时间,最后还是某杰想出来的。

题意:实现一个音乐播放器的操作,有3种操作。

注意:一开始播放器会播放播放列表中的第一首歌,也就是说一开始播放记录的栈中就有第一首歌

1.PRE  上一首 (如果退到了第一首歌,那么再按上一首还是第一首歌)

2.PLAY x   播放  播放列表中的第x首歌

3.NEXT   下一首 (如果到了最后一首,那么再按下一首还是最后一首)

注意:当播放器播放一首歌时,如果该歌曲与播放记录中的最后一首不同或者播放记录为空,便将该歌曲添加到播放记录中成为最后一首。

思路:可以直接用STL中的stack栈,也可以自己用数组写一个

代码:

#include<iostream>
#include<stdio.h>
#include<stack>
using namespace std; stack<int> st; int t;
int n,m;
char command[10];
int number;
int now; void next(){//next操作
if(now==n) printf("%d\n",now);//到了最后一首了,怎么按下一首还是最后一首
else{
now++;
st.push(now);
printf("%d\n",now);
}
}
void pre(){//pre操作
st.pop();
if(st.size()==0){//说明当前是第一首歌,后退操作后还应该是播放第一首
now=1;
st.push(now);//此处保证了栈永远不为空,最少也有第一首歌
printf("%d\n",now);
}
else{
now=st.top();
printf("%d\n",now);
}
}
void play(){//play操作
if(number!=st.top()){//当前的歌曲不同于播放记录中最后一首时,把当前歌曲设为播放记录中的最后一首
now=number;
st.push(now);
printf("%d\n",now);
}
else{
printf("%d\n",now);
}
}
int main(){
scanf("%d",&t);
while(t--){
while(!st.empty()){//一定要清空栈!血的教训!!
st.pop();
}
scanf("%d %d",&n,&m);
st.push(1);
now=1;
while(m--){
scanf("%s",command);
if(command[1]=='E'){
next();
}
else if(command[1]=='R'){
pre();
}
else{
scanf("%d",&number);
play();
}
}
}
return 0;
}

FZU 2091 播放器 (栈)的更多相关文章

  1. FZU 2091 播放器(栈应用)

    栈基础应用 #include<iostream> #include<cstdio> #include<cstring> #include<vector> ...

  2. FZU 2091 播放器

    简单模拟题,开个栈维护一下即可. #include<cstdio> #include<cstring> #include<cmath> #include<st ...

  3. HTML5音乐播放器(最新升级改造加强版)

    最近么,单位里面么老不顺心的,公司一直催要程序员要PHP,然后本宅好不容易推荐了一个,我日嘞,最后待遇变成1.3,吾师最后也同意1.3W,然后还说要考虑... 尼玛,4年多5年不到一点的工作经验,前端 ...

  4. C#做音乐播放器时在自动下一曲中报异常的解决办法

    ---------------------- ASP.Net+Unity开发..Net培训.期待与您交流! ---------------------- 在利用Media Player做音乐播放器的时 ...

  5. VLC播放器架构剖析

    VLC采用多线程并行解码架构,线程之间通过单独的一个线程控制所有线程的状态,解码器采用filter模式.组织方式为模块架构 模块简述:libvlc                  是VLC的核心部分 ...

  6. Vue2.0音乐播放器

    学习了几周的vuejs,学习的过程中做了一个音乐播放器WebApp (顺便听听音乐~) ,过程中也有借鉴过别人做的,感觉受益匪浅 链接 项目在线地址 : 音乐播放器 github : https:// ...

  7. 一个使用 Web Components 的音乐播放器: MelodyPlayer

    先上效果预览: Web Components 首先,什么是 Web Components ? MDN 给出的定义是: Web Components 是一套不同的技术,允许您创建可重用的定制元素(它们的 ...

  8. 一步步实现windows版ijkplayer系列文章之二——Ijkplayer播放器源码分析之音视频输出——视频篇

    一步步实现windows版ijkplayer系列文章之一--Windows10平台编译ffmpeg 4.0.2,生成ffplay 一步步实现windows版ijkplayer系列文章之二--Ijkpl ...

  9. 零基础读懂视频播放器控制原理——ffplay播放器源代码分析

    版权声明:本文由张坤原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/535574001486630869 来源:腾云阁 ht ...

随机推荐

  1. 总结自己使用shell命令行经常使用到的8个小技巧

    原创blog,转载请注明出处 Shell是命令解释器 [root@localhost ~]# cat /etc/shells 查看本系统共支持哪些shell 1 tab 命令补全 这个差点儿每次都能用 ...

  2. FileUpload控件预览图片

    HTML代码: <tr> <td class="auto-style1">上传图片:</td> <td> <asp:FileU ...

  3. Android后退事件的处理

    当我们想退出应用程序时,一般都会采用按物理按键(后退键)的做法,当用户在按两次后退键的时候就将应用程序退出,即销毁当前的Activity(): 重写onBackPressed()方法即可: 代码如下: ...

  4. SpringBoot启动流程分析(三):SpringApplication的run方法之prepareContext()方法

    SpringBoot系列文章简介 SpringBoot源码阅读辅助篇: Spring IoC容器与应用上下文的设计与实现 SpringBoot启动流程源码分析: SpringBoot启动流程分析(一) ...

  5. ZooKeeper 系列(一)—— ZooKeeper核心概念详解

    一.Zookeeper简介 二.Zookeeper设计目标 三.核心概念         3.1 集群角色         3.2 会话         3.3 数据节点         3.4 节点 ...

  6. Django之sitemap

    ##########settings.py SITE_ID=1 # Application definition # taggit tag INSTALLED_APPS = [ 'myblog', ' ...

  7. eclipse-jee版配置tomcat

    Eclipse作为一款优秀的java开发开源IDE,集成了许多优秀的开发控件.下来我就如何安装eclipse及插件进行说明: 一.JDK安装   JDK是作为整个java的核心,包括运行环境,编译工具 ...

  8. 多媒体开发之---h264中 的RTP PAYLOAD 格式

    H.264 视频 RTP 负载格式 1. 网络抽象层单元类型 (NALU) NALU 头由一个字节组成, 它的语法如下: +---------------+      |0|1|2|3|4|5|6|7 ...

  9. asm 与 cglib(整理的)

    参考博客地址 http://www.oseye.net/user/kevin/blog/304#top http://www.blogjava.net/vanadies10/archive/2011/ ...

  10. Drcom账户管理Server端解说

    https://www.github.com/xiyouMc 首先今天要讲的是针对Drcom查询账户URL的解析和抓取数据.    Drcom是大学生宿舍上网普遍使用的联网client,然而对于自己账 ...