單鏈表java簡易實現
阿新 • • 發佈:2018-04-12
dex truct RR ram 兩個 特殊 protected etl 鞏固
鞏固數據結構 單鏈表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; } }
單鏈表java簡易實現