java什么是链表

互联网 19-5-31
LinkedList使用了循环双向链表数据结构。与基于数组ArrayList相比,这是两种截然不同的实现技术,这也决定了它们将适用于完全不同的工作场景。

链表(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什么是链表的详细内容,更多内容请关注技术你好其它相关文章!

来源链接:
免责声明:
1.资讯内容不构成投资建议,投资者应独立决策并自行承担风险
2.本文版权归属原作所有,仅代表作者本人观点,不代表本站的观点或立场
标签: java
上一篇:php获取远程图片并下载保存到本地的方法分析 下一篇:java是开源的么?

相关资讯