#include <bits/stdc++.h>
using namespace std;
typedef int ElemType;
struct Node
{
ElemType data;
ElemType num;
ElemType next;
}p[100100];
int main()
{
int T;
struct Node t;
cin >> T;
while(T--)
{
stack<struct Node>Q;
int k;
cin >> k;
for(int i = 0; i < k; i++)
{
cin >> p[i].data;
p[i].num = i;
p[i].next = -1;
}
for(int i = 0; i < k; i++)
{
if(Q.empty())
{
Q.push(p[i]);
}
else
{
t = Q.top();
while(!Q.empty() && p[i].data > t.data)
{
int x = t.num;
p[x].next = p[i].data;
Q.pop();
if(Q.empty())
break;
t = Q.top();
}
Q.push(p[i]);
}
}
for(int i = 0; i < k; i++)
{
printf("%d-->%d\n",p[i].data,p[i].next);
}
if(T)
{
cout << endl;
}
}
return 0;
}
栈与队列:下一较大值
最新推荐文章于 2020-05-13 07:23:53 发布