题目描述

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

输入

 输入有多组,第一行输入t(1<=t<=10),表示输入的组数;

以后是 t 组输入:每组先输入n,表示本组序列的元素个数,之后依次输入本组的n个元素。

输出

 输出有多组,每组之间输出一个空行(最后一组之后没有);

每组输出按照本序列元素的顺序,依次逐行输出当前元素及其查找结果,两者之间以-->间隔。

示例输入

2
4 12 20 15 18
5 20 15 25 30 6 

示例输出

12-->20
20-->-1
15-->18
18-->-1

20-->25
15-->25
25-->30
30-->-1
6-->-1


#include <stdio.h>
#include<stdlib.h>
#include <malloc.h>
#define STACKSIZE 100100
struct node
{int data;int next;int id;//位置的标记;
}a[100100];
typedef struct
{node *top,*base;int stacksize;
}Stack;void initial(Stack &s)// 构造一个空栈S{s.base=(node*)malloc(sizeof(node)*STACKSIZE);if(!s.base) exit(-1);存储分配失败s.top=s.base;s.stacksize=STACKSIZE;
}
int Empty(Stack &s)//若栈为空栈,则返回1,否则 返回0;
{if(s.base==s.top){return 1;}return 0;
}
void clean(Stack &s) // 重置S为空栈{s.top=s.base;
}
void pop(Stack &s,node &e) //若栈不空,则删除S的栈顶元素,并//用e返回其值,
{if (!Empty(s)){s.top--;e=*s.top;}
}
void gettop(Stack &s,node &e)//用e返回S的栈顶元素
{e=*(s.top-1);
}
void push(Stack &s,node e) // 插入元素e为新的栈顶元素
{*s.top=e;s.top++;
}
int main()
{int t,n;Stack s;//栈的定义;initial(s);//栈的初始化;while(scanf("%d",&t)!=EOF){while(t--){clean(s);//清空栈scanf("%d",&n);for(int j=1;j<=n;j++){scanf("%d",&a[j].data);a[j].id=j;//标记读入的位置;a[j].next=-1;//标记后一个数是-1if(Empty(s))push(s,a[j]);else{while(!Empty(s)){node e;gettop(s,e);//获得栈顶元素;int k=e.id;if(e.data<a[j].data)//数据比较;{a[k].next=a[j].data;pop(s,e);//比较完出栈;}elsebreak;}push(s,a[j]);//将下一个数进栈,重复操作;}}for(int i=1;i<=n;i++){printf("%d-->%d\n",a[i].data,a[i].next);}if(t!=0)printf("\n");}}return 0;
}

数据结构实验之栈五:下一较大值(一)相关推荐

  1. 数据结构实验之栈三:后缀式求值

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

  2. SDUT 2133 数据结构实验之栈三:后缀式求值

    后缀式求值的方法参见我的另一篇文章 把运算符变成表达式 1 #include<stdio.h> 2 #include<string.h> 3 int main() 4 { 5 ...

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

    数据结构实验之栈与队列五:下一较大值(一) Time Limit: 1000MS Memory Limit: 65536KB Submit Statistic Discuss Problem Desc ...

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

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

  5. 数据结构 实验三 栈的基本运算

    栈的基本运算 任务一: 顺序栈的基本操作 任务描述: 本关任务:实现顺序栈的基本操作,包括栈的初始化.置空栈.进栈.出栈.判栈空.栈的输出(遍历)等. 相关知识: 为了完成本关任务,你需要掌握: - ...

  6. SDUT OJ 数据结构实验之图论五:从起始点到目标点的最短步数(BFS)

    数据结构实验之图论五:从起始点到目标点的最短步数(BFS) Time Limit: 1000 ms Memory Limit: 65536 KiB Submit Statistic Discuss P ...

  7. 数据结构实验之链表五:单链表的拆分-sdut

    数据结构实验之链表五:单链表的拆分 Time Limit: 1000MS Memory Limit: 65536KB Submit Statistic Problem Description 输入N个 ...

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

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

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

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

最新文章

  1. DEDE-Function ereg_replace() is deprecated in ..line 2
  2. amazeui页面分析之登录页面
  3. Dictionary Serializer(Dictionary 序列化)
  4. 《Redis设计与实现》之第十一章:AOF持久化
  5. 如何保留linux中yum安装后的rpm软件包
  6. iphone保修期多久_卖疯了!开发区9.9元起换iphone原厂电池!
  7. CSS3幻灯片制作心得
  8. lighttpd安装配置支持php
  9. Bootstrap-学习系列
  10. 如何在PHP中使用cURL连接到Tor隐藏服务?
  11. mangos服务器架构
  12. Glib2之spec编译打包rpm(九)
  13. OpenCV相机帧率低以及花屏问题
  14. laravel框架使用datatables
  15. [SPRD] 版本修改集锦
  16. 关于深度思考的一点总结
  17. 使用正则表达式提取文件中满足条件的内容
  18. springboot添加切面
  19. 我的世界java史莱姆生成条件_史莱姆 - Minecraft Wiki,最详细的官方我的世界百科...
  20. 机器视觉技术(总结)

热门文章

  1. 现代程序设计 (课程设计中, 征求意见稿)
  2. 顶级程序员的心得 Coders at Work (II)
  3. windows7系统损坏修复_【软件资讯】还在用win7?微软Windows 7系统正式停止技术支持...
  4. 解决:如何在Android Studio中找出自己项目文件的所在位置
  5. js foreach 跳出循环_VUE.js
  6. java字符转为数字_Java 判断字符串能否转化为数字的三种方法
  7. python十点半游戏代码_Python实现Pig Latin小游戏实例代码
  8. android ui自动化框架选型,Appium UI 自动化框架之我见 (开源)
  9. grasp设计模式应用场景_grasp设计模式笔记回顾
  10. xxljob 配置文件_最详细的xxl-job java配置方式spring-boot