ZBLOG

循环双链表1和循环双链表2合并后,将循环双链表2设置为空,用java写

以下是用Java编写的将两个循环双链表合并,并将第二个循环双链表设置为空的示例代码:

  1. class Node {
  2. int data;
  3. Node prev;
  4. Node next;
  5. public Node(int data) {
  6. this.data = data;
  7. this.prev = null;
  8. this.next = null;
  9. }
  10. }
  11. class DoublyLinkedList {
  12. Node head;
  13. // 添加节点到循环双链表尾部
  14. public void addToEnd(int data) {
  15. Node newNode = new Node(data);
  16. if (head == null) {
  17. head = newNode;
  18. head.prev = head;
  19. head.next = head;
  20. } else {
  21. Node lastNode = head.prev;
  22. lastNode.next = newNode;
  23. newNode.prev = lastNode;
  24. newNode.next = head;
  25. head.prev = newNode;
  26. }
  27. }
  28. // 合并两个循环双链表,并将第二个链表设置为空
  29. public static void mergeAndSetEmpty(DoublyLinkedList list1, DoublyLinkedList list2) {
  30. if (list1.head == null && list2.head == null) return;
  31. if (list1.head == null) {
  32. list1.head = list2.head;
  33. } else if (list2.head != null) {
  34. Node lastNodeList1 = list1.head.prev; // 最后一个节点
  35. Node firstNodeList2 = list2.head; // 第一个节点
  36. lastNodeList1.next = firstNodeList2; // 连接最后一个节点和第一个节点
  37. firstNodeList2.prev=lastNodeList1; // 建立连接
  38. Node lastNodeList2=list2.head.prev; //最后一个节点
  39. lastNodeList2.next=list1.head; // 连接最后一个节点和原循环双链表头部
  40. list1.head.prev=lastNodeList2; //建立连接
  41. list2.head=null; // 将list2设置为空
  42. }
  43. }
  44. // 打印循环双链表元素
  45. public void print() {
  46. if (head == null) return;
  47. Node currentNode = head;
  48. do {
  49. System.out.print(currentNode.data + " ");
  50. currentNode = currentNode.next;
  51. } while (currentNode != head);
  52. }
  53. }
  54. public class Main {
  55. public static void main(String[] args) {
  56. DoublyLinkedList list1 = new DoublyLinkedList();
  57. list1.addToEnd(1);
  58. list1.addToEnd(2);
  59. list1.addToEnd(3);
  60. DoublyLinkedList list2 = new DoublyLinkedList();
  61. list2.addToEnd(4);
  62. list2.addToEnd(5);
  63. System.out.println("Before merging:");
  64. System.out.print("List 1: ");
  65. list1.print();
  66. System.out.println();
  67. System.out.print("List 2: ");
  68. list2.print();
  69. System.out.println();
  70. DoublyLinkedList.mergeAndSetEmpty(list1, list2);
  71. System.out.println("After merging:");
  72. System.out.print("List 1: ");
  73. list1.print();
  74. System.out.println();
  75. System.out.print("List 2: ");
  76. if (list2.head == null) {
  77. System.out.println("Empty");
  78. } else {
  79. list2.print();
  80. System.out.println();
  81. }
  82. }
  83. }

这段代码定义了一个 Node 类表示双向链表的节点,以及一个 DoublyLinkedList 类表示双向链表的数据结构。addToEnd() 方法用于向循环双链表尾部添加节点,mergeAndSetEmpty() 方法用于合并两个循环双链表,并将第二个链表设置为空。最后,在 main 函数中创建两个循环双链表对象,并进行合并和输出测试。


内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=8132

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?