Я пытаюсь найти следующий больший элемент массива.Моя логика верна, и код не содержит ошибок, но я не могу получить выходные данные для каждого индекса.Я получаю его только для индекса 0. После этого он дает ошибку сегментации.Здесь a
- это входной массив, n
- это размер массива a
, а next
- это также массив, используемый для хранения непосредственного большего элемента a
.
void gofindnextelement(int a[],int next[],int n)
{
stack<int>s;
s.push(0);
int i,curr;
for( i=1;i<n;i++){
curr=a[i];
while(a[s.top()]<curr && s.empty()==0){
next[s.top()]=curr;
cout<<"index=" << s.top()<<"--->"<<next[s.top()]<<endl;
s.pop();
}
s.push(i);
}
while(s.empty()==0)
{
next[s.top()]=-1;
cout<<"index=" << s.top()<<"--->"<<next[s.top()]<<endl;
s.pop();
}
for(int i=0;i<n;i++)
cout<<next[i]<< " "<<endl;
}