• 数据结构——单链表java简易实现


    巩固数据结构 单链表java实现 单链表除了表尾 每个几点都有一个后继 结点有数据和后继指针组成  通过构建表头和表尾(尾部追加需要)两个特殊几点 实现单链表的一些操作,代码如下

    package com.shine.test.datastruct;
    
    /**
     * 简易链表
     * 
     * @author SHINE
     *
     * @param <E>
     */
    public class LinkList<E> {
    
    	private Node head, tail;
    	private int size = 0;
    
    	protected class Node<E> {
    		E data;
    		Node next;
    	}
    
    	public LinkList() {
    		head = new Node();
    		head.next = null;
    		tail = new Node<E>();
    	}
    
    	public void insert(E e, int index) {
    		Node newNode = new Node<E>();
    		newNode.data = e;
    
    		Node before = head;
    		Node temp = head.next;
    		while (index >= 0) {
    			if (index == 0) {
    				before.next = newNode;
    				newNode.next = temp;
    				size++;
    				break;
    			}
    			before = temp;
    			temp = temp.next;
    			index--;
    		}
    	}
    
    	public void add(E e) {
    		Node node = new Node();
    		node.data = e;
    		node.next = null;
    		if (head.next == null) {
    			head.next = node;
    		}
    		tail.next = node;
    		tail = node;
    		size++;
    	}
    
    	public E get(int index) {
    		if (index > size - 1) {
    			return null;
    		}
    		Node temp = head.next;
    		while (index >= 0) {
    			if (index == 0) {
    				return (E) temp.data;
    
    			}
    			temp = temp.next;
    			index--;
    		}
    		return null;
    	}
    
    	public E getFirst() {
    		return get(0);
    	}
    
    	public E getLast() {
    		return get(size - 1);
    	}
    
    	public void remove(E e) {
    		Node before = head;
    		Node temp = head.next;
    		while (temp != null) {
    			if (temp.data.equals(e)) {
    				before.next = temp.next;
    				size--;
    				break;
    			}
    			before = temp;
    			temp = temp.next;
    		}
    	}
    
    	@Override
    	public String toString() {
    		StringBuffer sb = new StringBuffer();
    		Node temp = head.next;
    		while (temp != null) {
    			sb.append(temp.data + "->");
    			temp = temp.next;
    		}
    		return sb.toString();
    	}
    
    	public int getLength() {
    		return size;
    	}
    }
    

      

  • 相关阅读:
    docker容器如何配置hosts文件?
    如何提高LaTeX的编译速度?
    VS编译时提示“无法查找或打开 PDB 文件”的解决方法
    全网最全电子书下载汇总
    chrome谷歌浏览器扩展程序推荐: 一键读图OCR
    关于研究生英文论文写作的一点思考
    小狼毫输入法的详细配置大全
    java的char类型
    Android APP 自动更新实现
    java中double数据失精度(失真)问题处理
  • 原文地址:https://www.cnblogs.com/lihuiupupup/p/8799268.html
Copyright © 2020-2023  润新知