資料結構實驗之棧與佇列五 下一較大值(一)

2021-08-22 05:51:04 字數 1552 閱讀 7111

problem description

對於包含n(1<=n<=1000)個整數的序列,對於序列中的每一元素,在序列中查詢其位置之後第乙個大於它的值,如果找到,輸出所找到的值,否則,輸出-1。

input

輸入有多組,第一行輸入t(1<=t<=10),表示輸入的組數;

以後是 t 組輸入:每組先輸入n,表示本組序列的元素個數,之後依次輸入本組的n個元素。

output

輸出有多組,每組之間輸出乙個空行(最後一組之後沒有);

每組輸出按照本序列元素的順序,依次逐行輸出當前元素及其查詢結果,兩者之間以-->間隔。

sample input

2

4 12 20 15 18

5 20 15 25 30 6

sample output

12-->20

20-->-1

15-->18

18-->-1

20-->25

15-->25

25-->30

30-->-1

6-->-1

hint

本題的資料量小、限時要求低,可以不用棧來完成。

方法一:利用棧來完成

#include

#include

#define stackmax 10000

#define stacknum 10000

typedef int elemtype;

typedef struct

sqstack;

void initstack(sqstack *s)

//棧的初始化

void push(sqstack *s,int e)

*(s->top)=e;

s->top++;

}//入棧操作

int pop(sqstack *s)

//出棧操作

void f(sqstack *s)

}if(f==0) printf("%d-->%d\n",*i,-1);//在給定數值之後沒有更大的數值}}

int main()

//將題目所給給的資料入棧

f(&s);//進行比較

if(t!=0) printf("\n");//若非最後一組,多輸出一行空格,要注意判斷是否為最後一組的條件是t是否為零,而不是一

}return 0;

}方法二:利用陣列來完成

#include

#include

int a[1010],b[1010];

int main()

//輸入資料,並把它存在乙個陣列裡

for(int i=1;i<=top;i++)

//進行數值上的比較,判斷是否有更大值,如果有,則把數值存在另乙個陣列裡,便與輸出

}if(f==0)b[++top1]=-1;//若沒有,則把-1存在另一陣列裡

}for(int i=1;i<=top;i++)

//按格式輸出兩個陣列

if(j!=t)printf("\n");//若不是最後一組資料,要多輸出一行空格

}return0;}

棧之資料結構實驗之棧與佇列五 下一較大值(一)

資料結構實驗之棧與佇列五 下一較大值 一 time limit 1000 ms memory limit 65536 kib submit statistic discuss problem description 對於包含n 1 n 1000 個整數的序列,對於序列中的每一元素,在序列中查詢其位置...

資料結構實驗之棧與佇列五 下一較大值(一)

time limit 1000 ms memory limit 65536 kib submit statistic discuss problem description 對於包含n 1 n 1000 個整數的序列,對於序列中的每一元素,在序列中查詢其位置之後第乙個大於它的值,如果找到,輸出所找到...

資料結構實驗之棧與佇列五 下一較大值(一)

description 對於包含n 1 n 1000 個整數的序列,對於序列中的每一元素,在序列中查詢其位置之後第乙個大於它的值,如果找到,輸出所找到的值,否則,輸出 1。input 輸入有多組,第一行輸入t 1 t 10 表示輸入的組數 以後是 t 組輸入 每組先輸入n,表示本組序列的元素個數,之...