sdut-3332 数据结构实验之栈与队列五:下一较大值(一)
数据结构实验之栈与队列五:下一较大值(一)
Problem Description
对于包含n(1<=n<=1000)个整数的序列,对于序列中的每一元素,在序列中查找其位置之后第一个大于它的值,如果找到,输出所找到的值,否则,输出-1。
Input
输入有多组,第一行输入t(1<=t<=10),表示输入的组数;
以后是 t 组输入:每组先输入n,表示本组序列的元素个数,之后依次输入本组的n个元素。
Output
输出有多组,每组之间输出一个空行(最后一组之后没有);
每组输出按照本序列元素的顺序,依次逐行输出当前元素及其查找结果,两者之间以-->间隔。
Example Input
2 4 12 20 15 18 5 20 15 25 30 6
Example Output
12-->20 20-->-1 15-->18 18-->-120-->25 15-->25 25-->30 30-->-1 6-->-1
Hint
本题的数据量小、限时要求低,可以不用栈来完成。
这道题在开始输入的时候就进行对数据进行处理,当输入每一组数据时,当栈为空时直接把该数据进栈,输入数据时不为空,则进行和栈中的数据进行比较....代码中有详解
#include <bits/stdc++.h>
using namespace std;//用来声明s栈struct sqstack
{int num;//用于记录输入的每一组数据的大小,从而好与后面数据进行比较大小int id,next;//id是为了记录输入的这个数据是这组数据的第几个,从而便于对a数组中的next的值进行赋值时找到是数组中在那个位置上(id位置)//next是用来存储比num数值大的那一个数
};
int compear()
{sqstack a[1000],p,t;//a数组到最后是用来进行输出的对象stack<struct sqstack>s;//s栈int n;scanf("%d",&n);for(int i=0;i<n;++i){cin>>a[i].num;a[i].id=i;a[i].next=-1;//后面会对其进行更改值,代表比他大的第一个值,如果没有改变说明这组数据中没有比他大的p=a[i];if(s.empty())//遇到空时直接对其进行进栈s.push(p);else{while(!s.empty())//不为空时,同时如果栈中有多个数据时会进行循环,直到为空或者找不到比这个数值大的{t=s.top();//栈顶元素 if(p.num>t.num){a[t.id].next=p.num;//t.id代表栈顶元素在这组数据的位置,同时也代表在a数组中代表的位置,在此把比他大的值存入到next中,s.pop();//已经为a[i-1]找到了第一个比他大的值,所以出栈就行啦,}elsebreak;//如果找不到比t.num大的值得话,最终就会循环}s.push(p);//a[i]不比a[i-1]大的话就结束,再把a[i]进栈}}for(int i=0;i<n;++i)printf("%d-->%d\n",a[i].num,a[i].next);return 0;
}
int main()
{int t;scanf("%d",&t);while(t--){compear();if(t)printf("\n");}
}
sdut-3332 数据结构实验之栈与队列五:下一较大值(一)相关推荐
- sdut 2088 数据结构实验之栈与队列十一:refresh的停车场
数据结构实验之栈与队列十一:refresh的停车场 Time Limit: 1000MS Memory Limit: 65536KB Submit Statistic Discuss Problem ...
- sdut 1479 数据结构实验之栈与队列九:行编辑器
数据结构实验之栈与队列九:行编辑器 Time Limit: 1000MS Memory Limit: 65536KB Submit Statistic Discuss Problem Descript ...
- sdut 3335 数据结构实验之栈与队列八:栈的基本操作
数据结构实验之栈与队列八:栈的基本操作 Time Limit: 1000MS Memory Limit: 65536KB Submit Statistic Discuss Problem Descri ...
- sdut 3333 数据结构实验之栈与队列六:下一较大值(二)
数据结构实验之栈与队列六:下一较大值(二) Time Limit: 150MS Memory Limit: 8000KB Submit Statistic Discuss Problem Descri ...
- sdut 2134 数据结构实验之栈与队列四:括号匹配
数据结构实验之栈与队列四:括号匹配 Time Limit: 1000MS Memory Limit: 65536KB Submit Statistic Discuss Problem Descript ...
- 数据结构实验之栈与队列三:后缀式求值
Description 对于一个基于二元运算符的后缀表示式(基本操作数都是一位正整数),求其代表的算术表达式的值. Input 输入一个算术表达式的后缀式字符串,以'#'作为结束标志. Output ...
- C - 数据结构实验之栈与队列三:后缀式求值
Description 对于一个基于二元运算符的后缀表示式(基本操作数都是一位正整数),求其代表的算术表达式的值. Input 输入一个算术表达式的后缀式字符串,以'#'作为结束标志. Output ...
- 数据结构实验之栈与队列五:下一较大值(一)
Description 对于包含n(1<=n<=1000)个整数的序列,对于序列中的每一元素,在序列中查找其位置之后第一个大于它的值,如果找到,输出所找到的值,否则,输出-1. Input ...
- SDUT-2449_数据结构实验之栈与队列十:走迷宫
数据结构实验之栈与队列十:走迷宫 Time Limit: 1000 ms Memory Limit: 65536 KiB Problem Description 一个由n * m 个格子组成的迷宫,起 ...
最新文章
- 高性能网站建设的14个原则
- ibatis(2)ibatis是什么
- 敲地鼠java_Java实现的打地鼠小游戏完整示例【附源码下载】
- VMWare MAC系统调整磁盘
- 使用Notepad++正则提取数据,然后进行替换
- easyui下拉选项多怎么解决_作物根部病害多原因在哪?解决病害生根措施怎么做?...
- [C#][原创]Magick.NET使用时一些弱点简介
- matlab主成分分析代码
- mysql 重做日志_mysql redo log 重做日志
- 雷神笔记本关闭触摸板
- 小白先学哪一门编程语言
- hdu 4379The More The Better
- 学习笔记2 - 利用元数据管理数据质量
- 大数据分析和大数据开发哪个好就业啊?
- Java实现字符串反转的几种方法
- Origin2018怎么画出向上向下的柱状图
- iOS开发——单元测试
- SQL查询初学者指南读书笔记(四)where从句
- 人工智能数学基础--导数3:隐函数求导、对数求导法、参数方程求导法
- 30G机器人培训全套资料!(300个PPT+400个视频教程)