zoukankan      html  css  js  c++  java
  • java实现双端链表

    PS:双端链表(持有对最后一个节点的引用,允许表尾操作与表头操作等效的功能)

    public class DoubleLinkedList {
    	//节点类
            static class Node {
    		public Object data;
    		public Node next;
    
    		public Node(Object dd) {
    			data = dd;
    		}
    
    		@Override
    		public String toString() {
    			return String.valueOf(data);
    		}
    	}
    
    	public Node head;//头结点
    	public Node tail;//尾节点
    
    	public DoubleLinkedList() {
    		head = null;
    		tail = null;
    	}
    
    	public boolean isEmpty() {
    		return (head == null);
    	}
    
    	// 表头插入
    	public void insertFirst(double dd) {
    		Node newLink = new Node(dd);
    		if (isEmpty()) {// 第一次插入节点
    			tail = newLink;
    		}
    		newLink.next = head;
    		head = newLink;
    	}
    
    	// 表尾插入
    	public void insertLast(double dd) {
    		Node newLink = new Node(dd);
    		if (isEmpty()) {
    			head = newLink;
    		} else {
    			tail.next = newLink;
    		}
    		tail = newLink;
    	}
    
    	// 删除表头
    	public void deleteFirst() {
    		head = head.next;
    		if (head.next == null) {
    			tail = null;
    		}
    	}
    
    	public void displayList() {
    		System.out.print("List (first--->last)");
    		Node current = head;
    		while (current != null) {
    			System.out.print(current.data + " ");
    			current = current.next;
    		}
    		System.out.println();
    	}
    
    	public static void main(String[] args) {
    		DoubleLinkedList linkedList = new DoubleLinkedList();
    		for (int i = 0; i <= 30; i += 5) {
    			// 头插
    			linkedList.insertFirst(i);
    		}
    		System.out.println("头插");
    		linkedList.displayList();
    		// 删除表头数据
    		linkedList.deleteFirst();
    		linkedList.displayList();
    		linkedList = new DoubleLinkedList();
    		for (int i = 0; i <= 30; i += 5) {
    			// 尾插
    			linkedList.insertLast(i);
    		}
    		System.out.println("尾插");
    		linkedList.displayList();
    		linkedList.deleteFirst();
    		linkedList.displayList();
    	}
    }    
    

      

  • 相关阅读:
    Bootstrap3入门
    Pi
    比Redis更快:Berkeley DB面面观
    搞定KMP匹配算法
    elasticsearch文档-analysis
    21本计算机数学相关的免费电子书
    [Android开发常见问题-12] Android开发中debug.keystore如何使用。
    (Java实现) 组合的输出
    (Java实现) 自然数的拆分
    (Java实现) 自然数的拆分
  • 原文地址:https://www.cnblogs.com/cugb-2013/p/3675440.html
Copyright © 2011-2022 走看看