Java链表的简单实现

来源:互联网 发布:js实现隐藏显示 编辑:程序博客网 时间:2024/05/27 00:47
public class LinkedList<T> {private Node<T> first;private Node<T> last;private int size;public boolean add(T e) {Node<T> node = new Node<>();if (first == null) {node.setData(e);node.setNext(null);node.setPrevious(null);first = node;last = node;size++;}else {node.setData(e);node.setPrevious(last);node.setNext(null);last.setNext(node);last = node;size++;}return true;}public T get(int index){if (first == null) {return null; }else {Node<T> node = first;for (int i = 0; i < index; i++) {node = node.getNext();}return node.getData();}}public void remove(int index){Node node;if (first != null) {node = first;for (int i = 0; i < index; i++) {node = node.getNext();}if (node != null) {if (node.getNext() != null && node.getPrevious() != null) {node.getPrevious().setNext(node.getNext());node.getNext().setPrevious(node.getPrevious());}else if(node.getNext() == null && node.getPrevious() != null){node.getPrevious().setNext(node.getNext());last = node.getPrevious();}else {node.getNext().setPrevious(node.getPrevious());first = node.getNext();}size --;}}}public int size() {// TODO Auto-generated method stubreturn size;}public static void main(String[] args) {LinkedList<String> linkedList = new LinkedList<>();linkedList.add("aaaaa");linkedList.add("aaa");linkedList.add("bbb");linkedList.add("bbbbb");System.out.println(linkedList.size);linkedList.remove(3);System.out.println(linkedList.size);for (int i = 0; i < linkedList.size(); i++) {System.out.println(linkedList.get(i));}}}class Node<T>{private T data;private Node<T> previous;private Node<T> next;public Node() {// TODO Auto-generated constructor stub}public T getData() {return data;}public void setData(T data) {this.data = data;}public Node<T> getPrevious() {return previous;}public void setPrevious(Node<T> previous) {this.previous = previous;}public Node<T> getNext() {return next;}public void setNext(Node<T> next) {this.next = next;}}
链表对元素的删除和插入不需要移动元素,只需要修改指针,而查找需要遍历,显得比较麻烦。
0 0
原创粉丝点击