• 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();
    	}
    }    
    

      

  • 相关阅读:
    2 安装部署flume
    1 flume快速入门——十分钟学会flume
    3、剑指offer-数组——数组中重复的数字
    3.kafka安装配置
    2、剑指offer-字符串——替换空格
    1、剑指offer-数组——二维数组中的查找
    JVM虚拟机垃圾回收(GC)算法及优缺点
    Exception in thread "main" java.lang.NoClassDefFoundError: com/google/common/collect/ImmutableMap
    LeetCode 617. 合并二叉树 Java
    Linux命令大全
  • 原文地址:https://www.cnblogs.com/cugb-2013/p/3675440.html
Copyright © 2020-2023  润新知