Java反转链表怎么测试

其他教程   发布日期:2025年03月09日   浏览次数:250

本篇内容主要讲解“Java反转链表怎么测试”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Java反转链表怎么测试”吧!

链表

特点

  • 便于增删数据,不便于寻址

  • 在内存中属于跳转结构

单链表和双链表的定义

单链表: 值,一条next指针

双链表:值,一条last指针,一条next指针

单向链表

Node结点

  1. public static class Node {
  2. public int value;
  3. public Node next;
  4. public Node(int value) {
  5. this.value = value;
  6. }
  7. @Override
  8. public String toString() {
  9. ArrayList<Integer> nums = new ArrayList<>();
  10. Node node = this;
  11. while (node != null) {
  12. nums.add(node.value);
  13. node = node.next;
  14. }
  15. return nums.toString();
  16. }
  17. }

反转单向链表

  1. public static Node reverseLinkedList(Node head) {
  2. Node next = null;
  3. Node pre = null;
  4. while (head != null) {
  5. next = head.next;
  6. head.next = pre;
  7. pre = head;
  8. head = next;
  9. }
  10. return pre;
  11. }

测试函数

  1. public static void main(String[] args) {
  2. Node node = new Node(1);
  3. node.next = new Node(2);
  4. node.next.next = new Node(3);
  5. node = reverseLinkedList(node);
  6. System.out.println(node);
  7. }

输出结果如下:

[3, 2, 1]

双向链表

Node结点

  1. public static class DoubleList {
  2. public int value;
  3. public DoubleList next;
  4. public DoubleList last;
  5. public DoubleList(int value) {
  6. this.value = value;
  7. }
  8. @Override
  9. public String toString() {
  10. ArrayList<Integer> nums = new ArrayList<>();
  11. DoubleList node = this;
  12. while (node != null) {
  13. nums.add(node.value);
  14. node = node.next;
  15. }
  16. return nums.toString();
  17. }
  18. }

反转双向链表

  1. public static DoubleList reverseDoubleList(DoubleList head) {
  2. DoubleList next;
  3. DoubleList pre = null;
  4. while (head != null) {
  5. next = head.next;
  6. head.next = pre;
  7. // 注意和单项链表不一样的地方只有这一行,其他都基本一样
  8. head.last = next;
  9. pre = head;
  10. head = next;
  11. }
  12. return pre;
  13. }

测试代码

  1. public static void main(String[] args) {
  2. DoubleList node1 = new DoubleList(1);
  3. node1.next = new DoubleList(2);
  4. node1.next.last = node1;
  5. node1.next.next = new DoubleList(3);
  6. node1.next.next.last = node1.next;
  7. System.out.println("reverseDoubleList(node1) = " + reverseDoubleList(node1));
  8. }

输出结果如下:

reverseDoubleList(node1) = [3, 2, 1]

以上就是Java反转链表怎么测试的详细内容,更多关于Java反转链表怎么测试的资料请关注九品源码其它相关文章!