java实现合并两个已经排序的列表
相对于C++来说,Java的最大特点之一就是没有令人困惑的指针,但是我们不可否认,在某些特定的情境下,指针确实算的上一把利刃。虽然Java中没有明确定义出指针,但是由于类的思想,我们可以使用class来实现指针的操作。小二,上栗子-----合并两个已经排序的列表,输出合并后列表的头结点,且合并后的列表中的元素是有序的。
需要时刻铭记于心的:在Java中,列表的一个节点其实就是某个类实例化的一个对象。
示例代码如下:
1 package DecemberOf2013; 2 3 class ListNode{ 4 int val; 5 ListNode next; 6 public ListNode(int val) { 7 this.val = val; 8 this.next = null; 9 } 10 } 11 12 public class MergeTowSortedLists { 13 14 public ListNode mergeLists(ListNode l1, ListNode l2){ 15 16 ListNode p1 = l1; 17 ListNode p2 = l2; 18 19 ListNode fadeHead = new ListNode(0); 20 ListNode pHead = fadeHead; 21 22 while(p1 != null && p2 != null){ 23 if(p1.val <= p2.val){ 24 pHead.next = p1; 25 p1 = p1.next; 26 } 27 else{ 28 pHead.next = p2; 29 p2 = p2.next; 30 } 31 pHead = pHead.next; 32 } 33 34 if(p1 != null){ 35 pHead.next = p1; 36 } 37 else{ 38 pHead.next = p2; 39 } 40 41 return fadeHead.next; 42 } 43 }
由于Java中的内存回收机制,是否可以保证不会出现C++或者C语言中的野指针或者内存泄露问题呢?等待大牛的详解。