首页 / JAVA / java-使用链表实现优先级队列
java-使用链表实现优先级队列
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java-使用链表实现优先级队列,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1668字,纯文字阅读大概需要3分钟。
内容图文
![java-使用链表实现优先级队列](/upload/InfoBanner/zyjiaocheng/661/8be3a06f16404b03a673e18086c433e2.jpg)
我已经使用链表实现了优先级队列.在此优先级队列中,最小的int值具有最大值,因此,通过调用remove方法,将删除最小的方法.
节点类的代码
public class Node {
public int iData;
public Node next;
public Node(int x) {
iData = x;
}
public void displayNode() {
System.out.println(iData + " ");
}
}
链接列表代码
public class LinkList {
private Node first;
public LinkList() {
first = null;
}
public boolean isEmpty() {
return first == null;
}
public void insert(int x) {
Node newNode = new Node(x);
Node previous = null;
Node current = first;
while (current != null && x < current.iData) {
previous = current;
current = current.next;
}
if (previous == null) {
newNode.next = first;
first = newNode;
}
else {
previous.next = newNode;
newNode.next = current;
}
}
public Node remove() {
Node previous = null;
Node current = first;
Node temp = current;
while (current.next != null) {
previous = current;
current = current.next;
}
previous.next = null;
return temp;
}
public void display() {
Node current = first;
while (current != null) {
current.displayNode();
current = current.next;
}
System.out.println(" ");
}
}
优先队列代码
public class PriorityQ {
private LinkList list;
public PriorityQ() {
list = new LinkList();
}
public void insert(int x) {
list.insert(x);
}
public void remove() {
list.remove();
}
public void displayList() {
System.out.println("Largest Value to Smallest");
list.display();
}
}
目前,它工作正常,但是我不确定链接列表类中的remove方法是否是删除元素的最佳方法.所以我正在寻找建议.
解决方法:
remove()应该从列表中删除第一个元素,对吗?你为什么要为此循环呢?
由于您的列表是单链链接(仅指向Node中的下一个元素),因此您需要做的是:
>将第一个存储在临时变量中(如果它是!= null)
>然后先更新以指向列表中的第二项
(如果!= null,则为first.next)
>然后返回临时变量.
内容总结
以上是互联网集市为您收集整理的java-使用链表实现优先级队列全部内容,希望文章能够帮你解决java-使用链表实现优先级队列所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。