当前位置:   article > 正文

头插法、尾差法创建单链表及其合并_头插法和尾插法两种方法实现单链表的合并

头插法和尾插法两种方法实现单链表的合并

头插法图示:


尾差法图示:


代码:

  1. package 数据结构;
  2. import java.util.Scanner;
  3. /**
  4. * 带头结点的链表的创建
  5. * @author wky
  6. *
  7. */
  8. class LNode{
  9. int data;
  10. LNode next;
  11. }
  12. public class 链表操作 {
  13. //头插法创建链表
  14. static LNode create_list_front(int n){
  15. LNode head,p;
  16. head = new LNode();
  17. head.next = null;
  18. for(int i=0;i<n;i++){
  19. p = new LNode();
  20. System.out.println("input elems(list_front):");
  21. Scanner scn = new Scanner(System.in);
  22. p.data = scn.nextInt();
  23. p.next = head.next;
  24. head.next = p;
  25. }
  26. return head;
  27. }
  28. //尾插法
  29. static LNode create_list_rear(int n){
  30. LNode s,r;//s指向新申请的节点,而r指向链表最新的终端节点
  31. LNode head;
  32. head = new LNode();
  33. head.next = null;
  34. r = head;//r指向head节点,此时head节点就是终端节点
  35. for(int i=0;i<n;i++){
  36. s = new LNode();
  37. System.out.println("input elems(list_rear):");
  38. Scanner scn = new Scanner(System.in);
  39. s.data = scn.nextInt();
  40. r.next = s;//用r来接纳新的节点
  41. r = r.next;//r指向终端节点
  42. }
  43. r.next = null;
  44. return head;
  45. }
  46. //打印链表
  47. static void print_list(LNode head){
  48. LNode p;
  49. p = head.next;
  50. while(p!=null){
  51. System.out.print(p.data+",");
  52. p = p.next;
  53. }
  54. }
  55. //两个有序链表合并
  56. static LNode merge_list(LNode la,LNode lb,LNode lc){
  57. LNode pa,pb,pc;
  58. pa = la.next; //pa,pb,pc 相当于一个跟踪标识号。
  59. pb = lb.next;
  60. pc = lc;
  61. while((pa!=null)&&(pb!=null)){
  62. if(pa.data<=pb.data){
  63. pc.next = pa;
  64. pc = pc.next;
  65. pa = pa.next;
  66. }else{
  67. pc.next = pb;
  68. pc = pc.next;
  69. pb = pb.next;
  70. }
  71. }
  72. pc.next = null;
  73. if(pa!=null) pc.next = pa;
  74. if(pb!=null) pc.next = pb;
  75. return lc;
  76. }
  77. public static void main(String[] args){
  78. LNode la;
  79. LNode lb;
  80. LNode lc;
  81. lc = new LNode();
  82. la = create_list_rear(5);
  83. lb = create_list_rear(6);
  84. lc = merge_list(la,lb,lc);
  85. System.out.println("l1:");
  86. print_list(la);
  87. System.out.println("l2:");
  88. print_list(lb);
  89. System.out.println("l3:");
  90. print_list(lc);
  91. }
  92. }


声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Gausst松鼠会/article/detail/543629
推荐阅读
相关标签
  

闽ICP备14008679号