• 数据结构——单链表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;
    	}
    }
    

      

  • 相关阅读:
    团队作业2 需求分析与原型设计
    团队作业1
    获取公众号关注二维码url
    用户绑定公众号列表与未绑定公众号列表
    修改个人信息
    公众号登录
    idea去掉右侧小窗口代码块预览,idea去掉右侧代码预览
    微信退款 订单金额或退款金额与之前请求不一致,请核实后再试
    取消支付
    linux命令发送请求
  • 原文地址:https://www.cnblogs.com/lihuiupupup/p/8799268.html
Copyright © 2020-2023  润新知