您好,欢迎访问一九零五行业门户网

java中什么是链表

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中什么是链表的详细内容。
其它类似信息

推荐信息