使用链表结构可以克服数组链表需要预先知道数据大小的缺点,链表结构可以充分利用计算机内存空间,实现灵活的内存动态管理。但是链表失去了数组随机读取的优点,同时链表由于增加了结点的指针域,空间开销比较大。在计算机科学中,链表作为一种基础的数据结构可以用来生成其它类型的数据结构。
链表通常由一连串节点组成,每个节点包含任意的实例数据(data fields)和一或两个用来指向上一个/或下一个节点的位置的链接("links")。
链表最明显的好处就是,常规数组排列关联项目的方式可能不同于这些数据项目在记忆体或磁盘上顺序,数据的存取往往要在不同的排列顺序中转换。
而链表是一种自我指示数据类型,因为它包含指向另一个相同类型的数据的指针(链接)。链表允许插入和移除表上任意位置上的节点,但是不允许随机存取。
package com.algorithm; /** * 链表的链结点,相当于车厢 * @author lenovo * */ public class Node { /** * 数据域 */ public long data; //结点域(指针域),相当于火车与火车的链接 public Node next; public Node(long value){ this.data =value; } /** * 显示方法 */ public void display(){ System.out.print(data+" "); } }
package com.algorithm; /** * 链表,相当于火车头 * @author lenovo *使用链表结构可以克服数组链表需要预先知道数据大小的缺点,链表结构可以充分利用计算机内存空间,实现灵活的内存动态管理。 *但是链表失去了数组随机读取的优点,同时链表由于增加了结点的指针域,空间开销比较大。 *在计算机科学中,链表作为一种基础的数据结构可以用来生成其它类型的数据结构。 * *链表通常由一连串节点组成,每个节点包含任意的实例数据(data fields)和一或两个用来指向上一个/或下一个节点的位置的链接("links")。 *链表最明显的好处就是,常规数组排列关联项目的方式可能不同于这些数据项目在记忆体或磁盘上顺序,数据的存取往往要在不同的排列顺序中转换。 *而链表是一种自我指示数据类型,因为它包含指向另一个相同类型的数据的指针(链接)。链表允许插入和移除表上任意位置上的节点,但是不允许随机存取。 */ public class LinkList { /** * 头结点,相当于火车头 */ private Node first; public LinkList(){ first =null; } /** * 插入一个结点,在头结点插入 */ public void insertFirst(long value){ Node node = new Node(value); node.next = first; first =node; } /** * 删除一个结点,在头结点删除 */ public Node deleteFirst(){ Node node = first; first=node.next; return node; } /** * 显示方法 */ public void display(){ Node current = first; while(current!=null){ current.display(); current = current.next; } System.out.println(); } /** * 查找方法 * @param value * @return */ public Node find(long value){ Node current = first; while(current.data!=value){ if(current.next==null){ return null; } current = current.next; } return current; } /** * 删除方法,根据数据域删除 * @param value * @return */ public Node delete(long value){ Node current = first; Node previous =first; //当前元素 while(current.data!=value){ if(current.next==null){ return null; } previous=current; current = current.next; } if(current == first) { first = first.next; } else { previous.next = current.next; } return current; } public static void main(String[] args) { LinkList linkList = new LinkList(); linkList.insertFirst(34); linkList.insertFirst(23); linkList.insertFirst(12); linkList.display(); linkList.deleteFirst(); linkList.display(); Node node = linkList.find(34); node.display(); System.out.println("--------"); node = linkList.delete(34); node.display(); System.out.println("~~~~~~~~~~~~~~~~~~~~~~"); linkList.display(); } }
相关推荐
链表Java实现代码
NULL 博文链接:https://zhanhao.iteye.com/blog/1137409
JAVA实现链表_双向链表
Java SE程序 类实现单向链表Java SE程序 类实现单向链表Java SE程序 类实现单向链表Java SE程序 类实现单向链表Java SE程序 类实现单向链表Java SE程序 类实现单向链表Java SE程序 类实现单向链表Java SE程序 类实现...
NULL 博文链接:https://bo-hai.iteye.com/blog/1997061
用java实现了数据结构中的链表,作为新手学习数据结构和java的资料。
异质链表的java实现,实现四个公司的增删该功能。
循环链表 实现约瑟夫环 java 自己写的 测试通过 有注释
用链表实现线性表java用链表实现线性表
用Java定义一个双向链表,实现链表的基本操作: 初始化、获取头结点、添加新元素、删除链表元素、 获取链表元素、查找链表元素、更新链表中某个元素、 判断链表是否为空、求链表元素个数、输出链表元素、清空链表。
此程序用java实现链表,很实用,word形式,有说明
java实现的动态链表!很简单的东西,没有完全的链表功能
数据结构-链表 JAVA语言实现,包含单向链表、双向链表、循环链表的遍历、删除和插入 详细介绍:http://blog.csdn.net/z740852294/article/details/77369439
本代码为链表的Java实现,使用了简单的实现了内部类,接口,难度系数不高,交互上有改进
JAVA链表实现类(数据结构学习).chm
约瑟夫问题,通过类实现的链表,并加以改进,做成双向链表
通过java实现的双向链表,及反转功能,可能对面试有用哦
用Java定义一个循环链表,实现链表的基本操作: 初始化*、获取头结点、添加新元素*、删除链表元素 、获取链表元素*、查找链表元素*、更新链表中某个元素、 判断链表是否为空、求链表元素个数、输出链表元素、清空...
用java链表实现了两个多项式的相加、相乘,最后得到最终结果以链表形式输出
java单向链表代码实现