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

      

  • 相关阅读:
    Python:字典
    Linux基础:dirname命令总结
    (三)封装与类
    (二)Java编程基础
    Ubuntu18.04 安装QQ、Tim、微信与win无差异
    (一)JDK安装和使用eclipse输出hello world
    Java复习目录
    (八)MySQL事务、视图、变量、存储过程、函数、流程控制结构
    (七)MySQL常见的数据类型、约束和标识列
    (六)MySQL数据、库、表的管理
  • 原文地址:https://www.cnblogs.com/cugb-2013/p/3675440.html
Copyright © 2011-2022 走看看