日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

發布時間:2024/8/23 编程问答 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 数据结构实验之栈六:下一较大值(二) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
#include <bits/stdc++.h> #include <iostream> using namespace std; struct node {int data;int next;//記錄下一個元素死亡值int pos;//用來記錄每個元素的位置*/ } a[100001],val[100000]; int main() {int t;while(~scanf("%d",&t)){int l=0;while(t--){int n;scanf("%d",&n);for(int i=0; i<n; ++i){cin>>a[i].data;a[i].pos=i;if(i==0){val[l]=a[i];++l;}else{for(int j=l-1; j>=0; --j){if(a[i].data>val[j].data){a[val[j].pos].next=a[i].data;//cout<<a[val[j].pos].data<<"-jkj->"<<a[i].data<<endl;val[j]=a[i];}else{val[l++]=a[i];break;}}}}for(int i=0; i<l; ++i){// cout<<val[i].data<<endl;a[val[i].pos].next=-1;}for(int i=0; i<n; ++i)printf("%d-->%d\n",a[i].data,a[i].next);//[i].data<<"-->"<<a[i].next<<endl;}}return 0; }

AC

#include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #include<stack> #define N 100001 using namespace std;struct node {int num;int id;int next; }; struct node a[N]; int main() {int t;scanf("%d",&t);stack <struct node > p;for(int i=1; i<=t; i++){while(!p.empty()){p.pop();}int n;if(i>1)printf("\n");scanf("%d",&n);for(int j=1; j<=n; j++){scanf("%d",&a[j].num);a[j].id=j;a[j].next=-1;if(p.empty()){p.push(a[j]);}else{while(!p.empty()){struct node b;b=p.top();if(b.num<a[j].num){a[b.id].next=a[j].num;p.pop();}elsebreak;}p.push(a[j]);}}for(int j=1; j<=n; j++){printf("%d-->%d\n",a[j].num,a[j].next);}}return 0; }



總結

以上是生活随笔為你收集整理的数据结构实验之栈六:下一较大值(二)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。