Could you help me make my merge more efficient? This code in java also provided
ID: 3920326 • Letter: C
Question
Could you help me make my merge more efficient? This code in java also provided node class. please show output!
class Node{
int data;
Node next;
Node(int d){
data = d;
next = null;
}
}
if text is needed
public void merge(LinkedList2 list, LinkedList2 list2) {
Node curr = list.head;
Node curr2 = list2.head;
Node curr3 = head;
int data;
while(curr != null && curr2 != null) {
if(curr.data < curr2.data) {
data = curr.data;
curr = curr.next;
}
else {
data = curr2.data;
curr2 = curr2.next;
}
Node temp = new Node(data);
if(curr3 == null) {
curr3 = temp;
head = temp;
}
else {
curr3.next = temp;
curr3 = curr3.next;
}
}
while( curr!= null) {
Node same = new Node(curr.data);
if(curr3 == null) {
curr3 = same;
head = same;
}
else {
curr3.next = same;
curr3 = curr3.next;
}
curr = curr.next;
}
while( curr2!= null) {
Node same = new Node(curr2.data);
if(curr3 == null) {
curr3 = same;
head = same;
}
else {
curr3.next = same;
curr3 = curr3.next;
}
curr2 = curr2.next;
}
}
public void print() {
Node rand = head;
if(rand == null) {
return;
}
do {
System.out.print(rand.data + " ");
if(rand == tail) {
break;
}
rand = rand.next;
}
while(rand != null );
System.out.println();
}
public void reverseList() {
Node newHead = null;
Node tempNode = null;
while(head != null) {
tempNode = head;
head = head.next;
tempNode.next = newHead;
newHead = tempNode;
}
head = newHead;
}
Explanation / Answer
Please find below the most effecient verison of merge function.
CODE
==============
public void merge(LinkedList2 l1, LinkedList2 l2) {
Node head = new Node(0);
Node p = head;
Node p1 = l1.head;
Node p2 = l2.head;
while(p1 != null && p2 != null){
if(p1.data < p2.data){
p.next = p1;
p1 = p1.next;
}else{
p.next = p2;
p2 = p2.next;
}
p = p.next;
}
if(p1 != null){
p.next = p1;
}
if(p2!=null){
p.next = p2;
}
head = head.next;
}
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.