数据结构与算法|Java实现单链表
来源:互联网 发布:软件开发工程师学习 编辑:程序博客网 时间:2024/05/16 12:58
单链表:用一组任意的存储单元来存储线性表的数据单元,这组数据可以是连续的,也可以是不连续的。
单链表的数据元素构成:数据内容+下一组数据存储的位置信息。(数据域+指针域)
下图为一组简单的链表存储结构:
如图,每一组单元数据都包含数据域与指针域部分,数据域保存着当前数据单元所存储的数据信息,指针域保存着下一数据单元的地址信息,在链表遍历中可以通过指针域的信息查找下一组数据信息。
一.添加数据
如果是在链表的末尾直接添加数据,可以通过遍历链表找到链表的末尾,然后再添加新的内容,以下的内容可以找到链表的末尾:
while(node->next != null){current = current.next;}
如果是在指定的位置上添加新的元素,则需要调整链表中单元的位置。
例如在上图的位置中插入一个元素(node),就要用过以下的方式实现:
Node node = new Node();node.next = left.next;(right)left.next = node;
删除数据的原理如同上图添加数据,也是要通过调整链表位置来实现。
如果要删除上图的right元素:
left.next = right.next;
用java实现单链表的代码:
class Node{private int data;private Node next;private Node head = null;public Node(){}public Node(int data){this.data = data;}public void init(int data){Node node = new Node(data);//node为链头,next为空node.next = head;//将node赋值给头headhead = node;}//在链表尾部加入数据public void add(int data){//要加入的数据Node node = new Node(data);//链头Node current = head;while(current.next != null){current = current.next;}current.next = node;}public void insert(int data, int index){int i = 0;Node node = new Node(data);//当前位置的结点Node current = head;//指定位置前的链表Node previous = head;//index位置后插入while(index != i){previous = current;current = current.next;i++;}node.next = current;previous.next = node;}//删除链表index位置上的元素public void delete(int index){int i = 1;Node current = head;Node previous = head;while(index != i){previous = current;current = current.next;i++;}previous.next = current.next;}//查找index位置上的元素public int find(int index){int i = 1;Node current = head;Node previous = head;while(index != i){previous = current;current = current.next;i++;}return current.data;}public void displayAll(){Node node = head;while(node != null){System.out.print(node.data+"->");node = node.next;}}}public class LinkListDemo01 {public static void main(String args[]){Node node = new Node();node.init(1);node.insert(2, 1);node .insert(3, 1);node.insert(4, 1);node.displayAll();System.out.println();node.add(5);node.displayAll();System.out.println();node.delete(3);node.displayAll();System.out.println();System.out.println(node.find(2));}}
运行结果:
1->4->3->2->1->4->3->2->5->1->4->2->5->4
0 0
- 数据结构与算法|Java实现单链表
- 数据结构与算法Java版——单链表的实现
- Java实现数据结构与算法-顺序表
- Java实现数据结构与算法-链表
- Java数据结构与算法---栈的实现
- java数据结构与算法-用链表实现栈
- java数据结构与算法-双端链表实现队列
- 数据结构与算法练习(Java实现)
- java数据结构与算法-单链表
- 【算法数据结构Java实现】Java实现单链表
- 数据结构与算法—常用数据结构及其Java实现
- Java数据结构算法实现
- 【数据结构与算法】汉诺塔算法——java递归实现
- 数据结构与算法-快速排序算法(java实现)
- java数据结构与算法
- Java数据结构与算法
- 《JAVA数据结构与算法》
- java 数据结构与算法
- 【Mybatis学习总结四】实现关联表查询----一对一关联(association)
- 算法分析
- C/C++编程规范(二)代码篇
- UML中的九种图
- 计算机中GL的表示含义
- 数据结构与算法|Java实现单链表
- Javascript讲解系列之一 Prototype原型链详解
- 从头到尾彻底解析Hash 表算法
- 遗传算法简单入门
- ACK分享
- nfs:server xxx is not responding, still trying
- 博客之路—老P
- JavaScript闭包
- bash