当前位置:   article > 正文

数据结构——单向链表——java版_listnode 单向链表 api

listnode 单向链表 api

本来这个专栏应该是数据结构——C++版的,但是C++还没学,只学了一点基础,还是Java比较熟悉一点,所以接下来还都是用Java来实现。好,接下来让我们开始正题。

什么是单向链表

单向链表是一种常见的数据结构,由一系列节点组成,每个节点包含数据和指向下一个节点的指针。它的特点是数据元素之间是单向连接的,每个节点只有一个指针指向下一个节点,最后一个节点指向空(null)。

在单向链表中,可以从头节点开始沿着指针依次访问每个节点,但不能从任意节点直接访问前一个节点,因为只有指向后一个节点的指针。

插入和删除操作是单向链表的主要操作。在单向链表中,插入和删除节点相对容易,只需要修改指针指向即可,不需要像数组那样移动大量元素。但是,查找某个节点的前一个节点则需要从头节点开始遍历整个链表,时间复杂度为 O(n),其中 n 是链表的长度。

注意:单向链表的优点是插入和删除操作效率高,适合频繁插入和删除操作的场景。缺点是不能快速地查找前一个节点,需要遍历整个链表。

单向链表的基本操作:

单向链表的基本操作包括插入、删除和遍历等操作。

1. 插入操作:在链表的任意位置插入一个新节点。
2. 删除操作:删除链表中指定位置的节点。
3. 遍历操作:遍历链表,访问链表中的每个节点。
 

单向链表的实现:
  1. class ListNode {
  2. int value;
  3. ListNode next;
  4. public ListNode(int value) {
  5. this.value = value;
  6. this.next = null;
  7. }
  8. }
  9. class LinkedList {
  10. ListNode head;
  11. public LinkedList() {
  12. this.head = null;
  13. }
  14. // 插入操作
  15. public void insert(int value) {
  16. ListNode newNode = new ListNode(value);
  17. if (head == null) {
  18. head = newNode;
  19. return;
  20. }
  21. ListNode current = head;
  22. while (current.next != null) {
  23. current = current.next;
  24. }
  25. current.next = newNode;
  26. }
  27. // 删除操作
  28. public void delete(int value) {
  29. if (head == null) return;
  30. if (head.value == value) {
  31. head = head.next;
  32. return;
  33. }
  34. ListNode current = head;
  35. while (current.next != null && current.next.value != value) {
  36. current = current.next;
  37. }
  38. if (current.next != null) {
  39. current.next = current.next.next;
  40. }
  41. }
  42. // 遍历操作
  43. public void traverse() {
  44. ListNode current = head;
  45. while (current != null) {
  46. System.out.print(current.value + " ");
  47. current = current.next;
  48. }
  49. System.out.println();
  50. }
  51. }
  52. public class Main {
  53. public static void main(String[] args) {
  54. LinkedList list = new LinkedList();
  55. // 插入操作
  56. list.insert(1);
  57. list.insert(2);
  58. list.insert(3);
  59. // 遍历操作
  60. list.traverse(); // 输出:1 2 3
  61. // 删除操作
  62. list.delete(2);
  63. // 遍历操作
  64. list.traverse(); // 输出:1 3
  65. }
  66. }
Java中快速实现单向链表:

在Java中,并没有内置的单向链表API。但是,你可以使用Java中的集合框架中的LinkedList类来实现单向链表的功能。LinkedList类实际上是一个双向链表,但是你可以通过只使用next指针来模拟单向链表的行为。

例如:我们可以通过只使用addLast、addFirst和remove方法来模拟单向链表的行为。

下面是一个使用Java的LinkedList类来实现单向链表功能的示例:

  1. import java.util.LinkedList;
  2. public class Main {
  3. public static void main(String[] args) {
  4. // 创建一个LinkedList对象来表示单向链表
  5. LinkedList<Integer> linkedList = new LinkedList<>();
  6. // 在链表末尾添加元素
  7. linkedList.addLast(1);
  8. linkedList.addLast(2);
  9. linkedList.addLast(3);
  10. // 在链表头部添加元素
  11. linkedList.addFirst(0);
  12. // 打印链表
  13. for (Integer value : linkedList) {
  14. System.out.print(value + " ");
  15. }
  16. System.out.println();
  17. // 删除第一个值为2的元素
  18. linkedList.remove((Integer) 2);
  19. // 打印链表
  20. for (Integer value : linkedList) {
  21. System.out.print(value + " ");
  22. }
  23. System.out.println();
  24. }
  25. }
总结:

单向链表是一种常见的数据结构,具有插入和删除操作高效的特点,适合于频繁插入和删除的场景。通过自定义节点类和链表类,我们可以在Java中实现单向链表,并进行相关操作。单向链表的灵活性和高效性使其在实际应用中得到广泛的应用。

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号