数据结构实验之栈与队列五:下一较大值(一)

Time Limit: 1000MS Memory Limit: 65536KB
Submit Statistic Discuss

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 数据结构实验之栈与队列五:下一较大值(一)相关推荐

  1. sdut 2088 数据结构实验之栈与队列十一:refresh的停车场

    数据结构实验之栈与队列十一:refresh的停车场 Time Limit: 1000MS Memory Limit: 65536KB Submit Statistic Discuss Problem ...

  2. sdut 1479 数据结构实验之栈与队列九:行编辑器

    数据结构实验之栈与队列九:行编辑器 Time Limit: 1000MS Memory Limit: 65536KB Submit Statistic Discuss Problem Descript ...

  3. sdut 3335 数据结构实验之栈与队列八:栈的基本操作

    数据结构实验之栈与队列八:栈的基本操作 Time Limit: 1000MS Memory Limit: 65536KB Submit Statistic Discuss Problem Descri ...

  4. sdut 3333 数据结构实验之栈与队列六:下一较大值(二)

    数据结构实验之栈与队列六:下一较大值(二) Time Limit: 150MS Memory Limit: 8000KB Submit Statistic Discuss Problem Descri ...

  5. sdut 2134 数据结构实验之栈与队列四:括号匹配

    数据结构实验之栈与队列四:括号匹配 Time Limit: 1000MS Memory Limit: 65536KB Submit Statistic Discuss Problem Descript ...

  6. 数据结构实验之栈与队列三:后缀式求值

    Description 对于一个基于二元运算符的后缀表示式(基本操作数都是一位正整数),求其代表的算术表达式的值. Input 输入一个算术表达式的后缀式字符串,以'#'作为结束标志. Output ...

  7. C - 数据结构实验之栈与队列三:后缀式求值

    Description 对于一个基于二元运算符的后缀表示式(基本操作数都是一位正整数),求其代表的算术表达式的值. Input 输入一个算术表达式的后缀式字符串,以'#'作为结束标志. Output ...

  8. 数据结构实验之栈与队列五:下一较大值(一)

    Description 对于包含n(1<=n<=1000)个整数的序列,对于序列中的每一元素,在序列中查找其位置之后第一个大于它的值,如果找到,输出所找到的值,否则,输出-1. Input ...

  9. SDUT-2449_数据结构实验之栈与队列十:走迷宫

    数据结构实验之栈与队列十:走迷宫 Time Limit: 1000 ms Memory Limit: 65536 KiB Problem Description 一个由n * m 个格子组成的迷宫,起 ...

最新文章

  1. 高性能网站建设的14个原则
  2. ibatis(2)ibatis是什么
  3. 敲地鼠java_Java实现的打地鼠小游戏完整示例【附源码下载】
  4. VMWare MAC系统调整磁盘
  5. 使用Notepad++正则提取数据,然后进行替换
  6. easyui下拉选项多怎么解决_作物根部病害多原因在哪?解决病害生根措施怎么做?...
  7. [C#][原创]Magick.NET使用时一些弱点简介
  8. matlab主成分分析代码
  9. mysql 重做日志_mysql redo log 重做日志
  10. 雷神笔记本关闭触摸板
  11. 小白先学哪一门编程语言
  12. hdu 4379The More The Better
  13. 学习笔记2 - 利用元数据管理数据质量
  14. 大数据分析和大数据开发哪个好就业啊?
  15. Java实现字符串反转的几种方法
  16. Origin2018怎么画出向上向下的柱状图
  17. iOS开发——单元测试
  18. SQL查询初学者指南读书笔记(四)where从句
  19. 人工智能数学基础--导数3:隐函数求导、对数求导法、参数方程求导法
  20. 30G机器人培训全套资料!(300个PPT+400个视频教程)

热门文章

  1. 无法实现接口成员,因为它不是公共的——interface
  2. 读未来产品的设计(1)
  3. Android启动过程深入解析
  4. driver: Linux设备模型之input子系统详解
  5. ARM Linux内核Input输入子系统浅解
  6. 戴尔-EMC联邦:存储业务该如何处理?
  7. Atitit sql计划任务与查询优化器--统计信息模块
  8. FreeMarker 自动转义和格式化HTML和XML输出,预防xss
  9. EBCDIK,EBCDIC,ASCII,shift JIS間の変換
  10. 产品经理利器之axure rp