zoukankan      html  css  js  c++  java
  • 《Java数据结构与算法》笔记-CH5-链表-5用双端链表实现队列

      1 //用双端链表实现队列
      2 /**
      3  * 节点类
      4  */
      5 class LinkQ {
      6     private long data;
      7     public LinkQ next;
      8 
      9     public LinkQ(long d) {
     10         this.data = d;
     11     }
     12 
     13     public String toString() {
     14         return String.valueOf(this.data);
     15     }
     16 }
     17 /**
     18  * 双端链表类
     19  */
     20 class FirstLastLink {
     21     private LinkQ first;
     22     private LinkQ last;
     23 
     24     public FirstLastLink() {
     25         first = null;
     26         last = null;
     27     }
     28 
     29     public boolean isEmpty() {
     30         return first == null;
     31     }
     32 
     33     public void insertLast(LinkQ l) {
     34         if (isEmpty())
     35             first = l;
     36         else
     37             last.next = l;
     38         last = l;
     39     }
     40 
     41     public LinkQ deleteFirst() {
     42         LinkQ temp = first;
     43         if (first.next == null)
     44             last = null;
     45         first = first.next;
     46         return temp;
     47     }
     48 
     49     @Override
     50     public String toString() {
     51         if (isEmpty())
     52             return "[]";
     53         LinkQ curr = first;
     54         StringBuilder sb = new StringBuilder();
     55         sb.append("[");
     56         while (curr != null) {
     57             sb.append(curr.toString()).append(",");
     58             curr = curr.next;
     59         }
     60         sb.deleteCharAt(sb.length() - 1);
     61         sb.append("]");
     62         return sb.toString();
     63     }
     64 
     65     public void display() {
     66         System.out.println(toString());
     67     }
     68 }
     69 /**
     70  * 队列类
     71  * 和上个例子的栈类的实现一样,都是强调概念上的实体,独立于它们的具体实现。
     72  * 用数组或是链表实现栈和队列都是一样的。栈的重要性是它的push pop操作,以及如何使用它们;队列的重要性是从队头移除,从队尾插入,以及如何使用。
     73  * 实现这些操作的内在机制从其重要性上讲,其实是不重要的。
     74  */
     75 class LinkQueue{
     76     private FirstLastLink link;
     77     public LinkQueue(){
     78         link = new FirstLastLink();
     79     }
     80     public boolean isEmpty(){
     81         return this.link.isEmpty();
     82     }
     83     public void insert(LinkQ l){
     84         this.link.insertLast(l);
     85     }
     86     public LinkQ remove(){
     87         return this.link.deleteFirst();
     88     }
     89     public String toString(){
     90         return this.link.toString();
     91     }
     92     public void display(){
     93         System.out.println(toString());
     94     }
     95 }
     96 public class LinkQueueDemo {
     97     public static void main(String[] args) {
     98         LinkQueue queue = new LinkQueue();
     99         for (int i = 0; i < 5; i++) {
    100             LinkQ l= new LinkQ(i);
    101             queue.insert(l);
    102             queue.display();
    103         }
    104         while(!queue.isEmpty()){
    105             System.out.print("移除元素:"+queue.remove());
    106             System.out.print(".现在队列为: ");
    107             queue.display();
    108         }
    109     }
    110 }
  • 相关阅读:
    centos 安装Phpstorm
    PostgreSQL 里面的 BIGSERIAL
    如何下载symfony
    换行
    javaScript 真经 小感 this 指向
    css3 抖动
    jq 抖动效果
    还是 js 替代 vw vh 了
    常用 Math 属性及方法
    js 判断浏览器类型及版本
  • 原文地址:https://www.cnblogs.com/fstack/p/5617344.html
Copyright © 2011-2022 走看看