復旦15上機真題 3 實現乙個優先佇列

2021-10-05 12:36:30 字數 812 閱讀 3437

題目:

給出優先佇列的實現,實現4個操作

輸出:輸出操作的結果

示例輸入:

10

add 1 1

add 2 3

add 3 2

add 4 3

next

remove 3

count

next

next

next

輸出:

224

1-1

分析:這道題目其實考試的是stl常見容器的知識;題目中remove操作是容器priority_queue本來所沒有的操作,在這個題目中用priority_queue實現顯然不合適。在常用的map,vector,set裡面選擇乙個;總的來說,我覺得set和map會好一些; vector刪除效率比較差;

#include

#include

#include

using

namespace std;

struct node };

intmain()

else

if(op[0]

=='n')}

else

if(op[0]

=='r')}

}else

if(op[0]

=='c'

)printf

("%d\n"

, s.

size()

);}return0;

}

1 5 實現乙個優先順序佇列

問題 怎樣實現乙個按優先順序排序的佇列?並且在這個佇列上面每次pop操作總是返回優先順序最 高的那個元素 通過引入另外的 index 變數組成三元組 priority,index,item 就能很好的避免上面 的錯誤,因為不可能有兩個元素有相同的 index 值。import heapq class...

1 5實現乙個優先順序佇列

問題 怎樣實現又給按優先順序排序的佇列?並且在佇列上面每次pop操作總是返回優先順序最高的那個元素 解決方案 下面的類利用heapq模組實現了乙個簡單的優先順序佇列 import heapq class priorityqueue def init self self.queue self.inde...

實現乙個優先順序佇列

怎樣實現乙個按優先順序排序的佇列?並且在這個佇列上面每次 pop 操作總是返回優先順序最高的那個元素 下面的類利用 heapq 模組實現了乙個簡單的優先順序佇列 import heapq class priorityqueue def init self self.queue self.index ...