Java 使用堆栈作为基本数据类型实现优先级队列
需要认真的帮助。我需要将堆栈作为基本数据类型,并使用它来实现优先级队列。它还必须包括insert方法和removeMin方法。谢谢,谢谢你的帮助 "Java 使用堆栈作为基本数据类型实现优先级队列,java,stack,queue,priority-queue,Java,Stack,Queue,Priority Queue,需要认真的帮助。我需要将堆栈作为基本数据类型,并使用它来实现优先级队列。它还必须包括insert方法和removeMin方法。谢谢,谢谢你的帮助 " import java.util.PriorityQueue; 导入java.util.Scanner; 导入java.util.Stack 公共类问题2{ 公共静态void main(字符串[]args){ 扫描仪scn=新扫描仪(System.in); PriorityQueue pq=新的PriorityQueue(); 对于(int i=0
import java.util.PriorityQueue;
导入java.util.Scanner;
导入java.util.Stack
公共类问题2{
公共静态void main(字符串[]args){
扫描仪scn=新扫描仪(System.in);
PriorityQueue pq=新的PriorityQueue();
对于(int i=0;我能请您澄清您所需的优先级队列min/max,以便它返回min/max值。堆栈FIFO。那么为什么需要混合这些值?当您要向堆栈中添加另一个元素时,请使用Collections.binarySearch
来确定插入它的位置。这样您可以确保堆栈中的元素总是经过排序。Im不知道为什么我需要混合这些,这只是一个项目的一部分。事实上,队列是后进先出的,这就是为什么我对如何做感到困惑和不知所措的原因。你能使用java.util.Stack
中的所有方法吗?或者你只限于push
和pop
?是的,我可以使用java.util.Stack
import java.util.PriorityQueue;
import java.util.Scanner;
import java.util.Stack
public class Problem2 {
public static void main(String[] args) {
Scanner scn = new Scanner(System.in);
PriorityQueue<Entry> pq = new PriorityQueue<Entry>();
for (int i = 0; i<5; i++)
{
int a = scn.nextInt();
String b = scn.next();
pq.add(new Entry(a, b));
}
System.out.println("The output from the priority queue:");
for(int i = 0, c = pq.size(); i<c; i++)
{
System.out.println(pq.remove());
}
}
static class Entry implements Comparable<Entry> {
int k;
String v;
public Entry()
{
}
public Entry(int key, String value) {
k = key;
v = value;
}
public String toString() {
return ("Key " + k + " value " + v);
}
public int compareTo(Entry b) {
return Integer.compare(this.k, b.k);
}
}
}