首页 > 其他 > 详细

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

时间:2020-02-26 12:34:20      阅读:67      评论:0      收藏:0      [点我收藏+]

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

Description

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

Input

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

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

Output

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

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

Sample

Input 

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

Output 

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

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

Hint

 本题数据量大、限时要求高,须借助栈来完成。

 1 #include<stdio.h>
 2 #include<stdlib.h>
 3 #define ma 100001
 4 int a[ma],b[ma],sqstack[ma];
 5 int main()
 6 {
 7     int t,n,i,flag,top;
 8     while(scanf("%d",&t)!=EOF)
 9         {while(t--)
10         {   top=0;
11             scanf("%d",&n);
12             for(i=0;i<n;i++)
13             {
14                 scanf("%d",&a[i]);
15             }
16             b[n-1]=-1;       //最后一个数后面没有数。
17             for(i=n-2;i>=0;i--)
18             {   flag=0;
19                 if(a[i+1]>a[i])//如果从最后一个数开始满足后一个数大于前一个数
20                 {
21                     sqstack[++top]=a[i+1];   //top为相邻两个数满足这种关系的个数
22                     b[i]=a[i+1];
23                 }
24                 else     //如果有的是后一个数小于前一个数,那么看该数后面的数是否有大于该数的数。
25                 {
26                     while(top!=0)
27                     {
28                         if(sqstack[top]>a[i])
29                         {
30                             flag=1;
31                             b[i]=sqstack[top];
32                             break;//记得break;
33                         }
34                        top--;
35                     }
36                     if(flag==0)
37                     {
38                         b[i]=-1;
39                     }
40                 }
41             }
42             for(i=0;i<n;i++)
43             {
44                 printf("%d-->%d\n",a[i],b[i]);
45             }
46        if(t)
47 
48        printf("\n");
49         }
50     }return 0;
51 }

 

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

原文:https://www.cnblogs.com/xiaolitongxueyaoshangjin/p/12366177.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!