链表(Linked list)是一种罕见的基本数据构造,是一种线性表,然则并不会按线性的递次存储数据,而是在每个节点里存到下一个节点的指针(Pointer)。
运用链表构造能够战胜数组链表须要预先晓得数据大小的瑕玷,链表构造能够充分利用计算机内存空间,完成天真的内存动态治理。然则链表失去了数组随机读取的长处,同时链表因为增加了结点的指针域,空间开支比较大。
实例:
package com.ys.link; public class DoublePointLinkedList { private Node head;//头节点 private Node tail;//尾节点 private int size;//节点的个数 private class Node{ private Object data; private Node next; public Node(Object data){ this.data = data; } } public DoublePointLinkedList(){ size = 0; head = null; tail = null; } //链表头新增节点 public void addHead(Object data){ Node node = new Node(data); if(size == 0){//假如链表为空,那末头节点和尾节点都是该新增节点 head = node; tail = node; size++; }else{ node.next = head; head = node; size++; } } //链表尾新增节点 public void addTail(Object data){ Node node = new Node(data); if(size == 0){//假如链表为空,那末头节点和尾节点都是该新增节点 head = node; tail = node; size++; }else{ tail.next = node; tail = node; size++; } } //删除头部节点,胜利返回true,失利返回false public boolean deleteHead(){ if(size == 0){//当前链表节点数为0 return false; } if(head.next == null){//当前链表节点数为1 head = null; tail = null; }else{ head = head.next; } size--; return true; } //推断是不是为空 public boolean isEmpty(){ return (size ==0); } //取得链表的节点个数 public int getSize(){ return size; } //显现节点信息 public void display(){ if(size >0){ Node node = head; int tempSize = size; if(tempSize == 1){//当前链表只要一个节点 System.out.println("["+node.data+"]"); return; } while(tempSize>0){ if(node.equals(head)){ System.out.print("["+node.data+"->"); }else if(node.next == null){ System.out.print(node.data+"]"); }else{ System.out.print(node.data+"->"); } node = node.next; tempSize--; } System.out.println(); }else{//假如链表一个节点都没有,直接打印[] System.out.println("[]"); } } }
以上就是java什么是链表的细致内容,更多请关注ki4网别的相干文章!