随笔 - 0  文章 - 3  trackbacks - 0
<2025年7月>
293012345
6789101112
13141516171819
20212223242526
272829303112
3456789

留言簿

文章档案(50)

搜索

  •  

最新评论

习题4:有La,Lb两个有序链表,将Lb链表插入La链表中去,


使之依然有序...


我严格按照单链表来做,尽管有些麻烦,可是做过会有很大的提高,


这是一个思考的过程,很多程序不是写出来就能得出正确的结果的,


代码如下:


java 代码


java 代码




  1. class Node {   

  2.     int element;   

  3.   

  4.     Node next;   

  5.   

  6.     public Node(int i) {   

  7.         this(i, null);   

  8.     }   

  9.   

  10.     public Node(int i, Node next) {   

  11.         this.element = i;   

  12.         this.next = next;   

  13.     }   

  14. }   

  15.   

  16. class LinkedList {   

  17.     public Node header;   

  18.   

  19.     public LinkedList() {   

  20.         header = null;   

  21.     }   

  22.   

  23.     public boolean isEmpty() {   

  24.         return header == null;   

  25.     }   

  26.   

  27.     public void addtotail(int e) {   

  28.         if (!isEmpty()) {   

  29.             Node temp = header.next;   

  30.             if (temp == null) {   

  31.                 header.next = new Node(e);   

  32.             } else {   

  33.                 while (temp.next != null) {   

  34.                     temp = temp.next;   

  35.                 }   

  36.                 temp.next = new Node(e);   

  37.             }   

  38.         } else {   

  39.             header = new Node(e);   

  40.         }   

  41.     }   

  42.   

  43.     public void printAll() {   

  44.         for (Node temp = header; temp != null; temp = temp.next) {   

  45.             System.out.print(temp.element + " ");   

  46.         }   

  47.     }   

  48.   

  49.     public void insertA(LinkedList la, LinkedList lb) {   

  50.         Node heada = la.header;   

  51.         Node headb = lb.header;   

  52.         while (headb != null) {   

  53.             if (headb.element < la.header.element) {   

  54.                 int i = headb.element;   

  55.                 Node head = new Node(i);   

  56.                 head.next = heada;   

  57.                 la.header = head;   

  58.                 headb = headb.next;   

  59.                 System.out.println();   

  60.                 continue;   

  61.             } else {   

  62.                 heada=la.header;   

  63.                 while (headb.element >= heada.next.element && heada.next != null) {   

  64.                     heada = heada.next;   

  65.                     continue;   

  66.                 }   

  67.                 if (heada.next != null) {   

  68.                     int i = headb.element;   

  69.                     Node node = new Node(i);   

  70.                     node.next = heada.next;   

  71.                     heada.next = node;   

  72.                     headb = headb.next;   

  73.                     continue;   

  74.                 } else {   

  75.                     System.out.println("fjdksa");   

  76.                     int i = headb.element;   

  77.                     addtotail(i);   

  78.                     headb = headb.next;   

  79.                     continue;   

  80.                 }   

  81.             }   

  82.         }   

  83.         System.out.println();   

  84.         System.out.print("List A: ");   

  85.         la.printAll();   

  86.     }   

  87. }   

  88.   

  89. public class InsertListA {   

  90.     public static void main(String args[]) {   

  91.         LinkedList La = new LinkedList();   

  92.         LinkedList Lb = new LinkedList();   

  93.         for (int i = 4; i < 30; i = i + 5) {   

  94.             La.addtotail(i);   

  95.         }   

  96.         System.out.print("List A: ");   

  97.         La.printAll();   

  98.         System.out.println();   

  99.         for (int i = 1; i < 20; i = i + 2) {   

  100.             Lb.addtotail(i);   

  101.         }   

  102.         System.out.print("List B: ");   

  103.         Lb.printAll();   

  104.         La.insertA(La, Lb);   

  105.     }   

  106. }   



运行结果:


List A: 4 9 14 19 24 29

List B: 1 3 5 7 9 11 13 15 17 19

List A: 1 3 4 5 7 9 9 11 13 14 15 17 19 19 24 29


写了两天...


我还要用双向链表再写一下...





评论也很精彩,请点击查看精彩评论。欢迎您也添加评论。查看详细 >>





JavaEye推荐
北京:优秀公司NHNChina招聘:WEB开发,系统管理,JAVA开发, DBA
广州:急招 JAVA开发经理/系统架构师(10-15K/月)也招聘java程序员
与Hibernate之父面对面-4月19日 Gavin King上海交流研讨会
高薪工作机会 美国法国上海 15-20k/月 J2EE SA



文章来源: http://xiaozhe.javaeye.com/blog/66679
posted on 2007-03-30 14:30 xiaozhe 阅读(87) 评论(0)  编辑  收藏

只有注册用户登录后才能发表评论。


网站导航: