description:
given two sorted singly list, merge them into one using constant additional
space
algorithm:
we will reference the two linked list as list1 and list2 for convenience,
since list1 is sorted,just find the right position for each element in
list2,
detailed comments are added to the following code
?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 |
|
key points:
1.pay special attention to keep head pointer, which is easily lost,
my solution is to set a flag bool variance, which is linear complexity
but somewhat inefficient
perhaps it has potential to improve
2.avoid misorder of pointer
3.special condition: if (p1 == NULL) return p2;
if(p2 == NULL ) return p1;
4.when search for the postion for a certain element in list1, note that it
might be above any element in list1 so tmpp1 might reach its end(value equals
NULL) during search
线性时间将两个有序链表合成一个有序链表(constant additional space),码迷,mamicode.com