本文主要是介绍栈 之 寻找下一个较大元素 next greater element,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
//栈 之 寻找下一个较大元素 next greater element#include <iostream>
#include <stdio.h>
#include <stack>
using namespace std;
void findnge(int arr[],int len){
stack<int> s;
s.push(arr[0]);
int i=1;
int top,next;
for(i=1;i<len;i++){
next = arr[i];
top = s.top();
//判断是否找到栈顶元素的nge
while(s.size()>0 && top<next){
printf("\n %d-->%d",top,next);
s.pop();//找到后弹出
if(s.size()>0)//继续判断栈顶
top = s.top();
}
//将下一个元素入栈,以便查找其nge
s.push(next);
}
while(s.size()>0){
top = s.top();
s.pop();
printf("\n %d-->%d",top,-1);
}
}
int main(){
int arr[] = {11,13,10,5,12,21,3};
int n = sizeof(arr)/sizeof(arr[0]);
findnge(arr,n);
return 0;
}
这篇关于栈 之 寻找下一个较大元素 next greater element的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!