您的位置:首页 > 理论基础 > 数据结构算法

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

2017-06-03 19:45 183 查看
# include <bits/stdc++.h>

# include <algorithm>

# include <stack>

using namespace std;

struct node

{

    int data, place, next;

} z[100010];

int main()

{

    int T;

    while(~scanf("%d",&T))

    {

        while(T--)

        {

            int n;

            scanf("%d",&n);

            stack<struct node>Q;

            int i;

            for(i=0; i<n; i++)

            {

                scanf("%d",&z[i].data);

                z[i].place=i;

                z[i].next=-1;

                if(Q.empty())

                {

                    Q.push(z[i]);

                }

                else

                {

                    while(!Q.empty())

                    {

                        struct node t=Q.top();

                        if(z[i].data>t.data)

                        {

                            z[t.place].next=z[i].data;

                            Q.pop();

                        }

                        else

                            break;

                    }

                    Q.push(z[i]);

                }

            }

            for(i=0; i<n; i++)

                printf("%d-->%d\n",z[i].data,z[i].next);

            if(T!=0)

                printf("\n");

        }

    }

    return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: