L3 002 特殊堆疊 30分

2021-10-08 01:19:39 字數 1580 閱讀 2651

堆疊是一種經典的後進先出的線性結構,相關的操作主要有「入棧」(在堆疊頂插入乙個元素)和「出棧」(將棧頂元素返回並從堆疊中刪除)。本題要求你實現另乙個附加的操作:「取中值」——即返回所有堆疊中元素鍵值的中值。給定

n 個元素,如果 n 是偶數,則中值定義為第 n/2 小元;若是奇數,則為第 (n+1)/2 小元。

輸入的第一行是正整數 n(≤10 ​5 ​​ )。隨後 n 行,每行給出一句指令,為以下 3 種之一:

push key

poppeekmedian

其中 key 是不超過 10 ​5 ​​ 的正整數;push 表示「入棧」;pop 表示「出棧」;peekmedian 表示「取中值」。

對每個 push 操作,將 key 插入堆疊,無需輸出;對每個 pop 或 peekmedian

操作,在一行中輸出相應的返回值。若操作非法,則對應輸出 invalid。

17

poppeekmedian

push 3

peekmedian

push 2

peekmedian

push 1

peekmedian

poppop

push 5

push 4

peekmedian

poppop

poppop

invalid

invalid32

2124

453invalid

#include

#include

#include

#include

using

namespace std;

vector<

int> p1,p2;

vector<

int>

::iterator it;

intmain()

else

if(str==

"pop")}

else

if(str==

"peekmedian")}

}return0;

}/*17pop

peekmedian

push 3

peekmedian

push 2

peekmedian

push 1

peekmedian

poppop

push 5

push 4

peekmedian

poppop

poppop

*/

1.lower_bound()函式的用法 upper_bound()函式用法

2.vector型別函式的使用: insert(),erase(),pop_back(),push_back(),back(), front(),

L3 002 特殊堆疊 (30 分)

堆疊是一種經典的後進先出的線性結構,相關的操作主要有 入棧 在堆疊頂插入乙個元素 和 出棧 將棧頂元素返回並從堆疊中刪除 本題要求你實現另乙個附加的操作 取中值 即返回所有堆疊中元素鍵值的中值。給定 n 個元素,如果 n 是偶數,則中值定義為第 n 2 小元 若是奇數,則為第 n 1 2 小元。輸入...

L3 002 特殊堆疊 (30 分

堆疊是一種經典的後進先出的線性結構,相關的操作主要有 入棧 在堆疊頂插入乙個元素 和 出棧 將棧頂元素返回並從堆疊中刪除 本題要求你實現另乙個附加的操作 取中值 即返回所有堆疊中元素鍵值的中值。給定 n 個元素,如果 n 是偶數,則中值定義為第 n 2 小元 若是奇數,則為第 n 1 2 小元。輸入...

L3 002 特殊堆疊 (30 分

l3 002 特殊堆疊 30 分 堆疊是一種經典的後進先出的線性結構,相關的操作主要有 入棧 在堆疊頂插入乙個元素 和 出棧 將棧頂元素返回並從堆疊中刪除 本題要求你實現另乙個附加的操作 取中值 即返回所有堆疊中元素鍵值的中值。給定 n 個元素,如果 n 是偶數,則中值定義為第 n 2 小元 若是奇...