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

2021-08-09 10:26:46 字數 1459 閱讀 7457

time limit: 150ms

memory limit: 8000kb

submit

statistic

problem description

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

input

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

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

output

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

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

example input

2

4 12 20 15 18

5 20 15 25 30 6

example output

12-->20

20-->-1

15-->18

18-->-1

20-->25

15-->25

25-->30

30-->-1

6-->-1

hint

本題資料量大、限時要求高,須借助棧來完成。

//整體思路:把每乙個進來的數做成結構體,包括:這個數進來的先後順序、數值、他所指向的那個數。

// 然後,再把結構體進行出棧入棧操作。進來乙個數,和棧頂元素比較,比她小就入棧,比她大就把他賦給棧頂元素的key,

// 直到把進來的數都操作完,剩下的在棧中的她的key值都是-1.

#include #include #define maxstack 100005

#define increment 1000

typedef struct

name;

typedef struct

qstack;

int initstack(qstack * s)

int pushstack(qstack * s,name e)//對棧的操作都是針對結構體name e

else

return 0;

}name gettop(qstack * s)

int popstack(qstack * s)

return 0;

}int main()

for(i = 0; i <= m - 1; i++)

else

pushstack(&s,k[i]);*/

}else}}

for(i = 0;i <= m - 1;i++)

if(n != 0)

printf("\n");

}return 0;

}

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

資料結構實驗之棧與佇列六 下一較大值 二 time limit 150 ms memory limit 8000 kib problem description 對於包含n 1 n 100000 個整數的序列,對於序列中的每一元素,在序列中查詢其位置之後第乙個大於它的值,如果找到,輸出所找到的值,否...

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

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

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

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