首页 > 代码库 > 有序链表实现的优先级队列
有序链表实现的优先级队列
package day1_29;public class Link { public long dDate; public Link next; public Link(long dDate){ this.dDate = dDate; } //打印链结点的方法 public void displayLink(){ System.out.println("["+dDate+"]"); } }==================================================package day1_29;public class SortedList { private Link first; public SortedList(){ first = null; } //判断链表是不是为空 public boolean isEmpty(){ if(first == null){ return true; }else{ return false; } } //插入一个元素的实现 public void insert(long key){ Link newLink = new Link(key); Link current = first; Link previous = null; while(current != null && key >current.dDate){ previous = current; current = current.next; } if(previous == null){//在头节点的时候 first = newLink; }else previous.next = newLink; newLink.next = current; } //删除节点的实现 public Link remove(){//删除头结点的方法,只能删除头节点,为了符合队列的性质 Link temp = first; first = first.next; return temp; } //打印链表的实现 public void displayList(){ Link current = first; while(current != null){ current.displayLink(); current = current.next; } System.out.println(); } }================================================package day1_29;public class PriorityQ { private SortedList sortedList; public PriorityQ(){ sortedList = new SortedList(); } //队列的插入方法 public void insert(long item){ sortedList.insert(item); } //删除的方法 public long remove(){ return sortedList.remove().dDate; } //判断是不是为空 public boolean isEmpty(){ return sortedList.isEmpty(); } //打印的方法 public void display(){ sortedList.displayList(); } }==========================================package day1_29;public class Practice5_1 { /** * 实现一个基于有序链表的优先级队列,队列的删除操作应该删除具有最小关键字 * 的链结点 */ public static void main(String[] args) { PriorityQ priorityQ = new PriorityQ(); priorityQ.insert(11); priorityQ.insert(33); priorityQ.insert(22); priorityQ.insert(55); priorityQ.insert(44); priorityQ.display(); }}
有序链表实现的优先级队列
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。