最近、私はこの問題に遭遇しました。私はそれを解決することができず、それは私を悩ましています。私のコードは機能しません。最も効率的な方法でソートされた2つのリンクリストをマージする
//Program to merge two sorted linked lists.
public class LLMergeSort{
static Node head1;
static Node head2;
static Node newHead;
static class Node{
int data;
Node next;
Node(int d){data=d;next=null;}
}
public static void merge(Node head1,Node head2,Node newHead){
Node curr1 = head1;
Node curr2 = head2;
while(curr1!=null && curr2!=null){
if(curr1.data<curr2.data){
Node new_node = new Node(curr1.data);
new_node.next = newHead;
newHead = new_node;
curr1 = curr1.next;
}
else{
Node new_node = new Node(curr2.data);
new_node.next = newHead;
newHead = new_node;
curr2 = curr2.next;
}
}
if(curr1==null){
while(curr2!=null){
Node new_node = new Node(curr2.data);
new_node.next = newHead;
newHead = new_node;
curr2 = curr2.next;
}
}
else if(curr2==null){
while(curr1!=null){
Node new_node = new Node(curr1.data);
new_node.next = newHead;
newHead = new_node;
curr1 = curr1.next;
}
}
print(newHead);
}
private static void print(Node newHead){
Node curr = newHead;
System.out.println("Linked list after merging both the lists : ");
while(curr!=null){
System.out.print("["+curr.data+"]->");
curr = curr.next;
}
System.out.print("NULL");
System.out.println();
}
public static void main(String[] args) {
LLMergeSort ll1 = new LLMergeSort();
ll1.head1 = new Node(11);
ll1.head1.next = new Node(10);
ll1.head1.next.next = new Node(8);
ll1.head1.next.next.next = new Node(6);
LLMergeSort ll2 = new LLMergeSort();
ll2.head2 = new Node(18);
ll2.head2.next = new Node(15);
ll2.head2.next.next = new Node(9);
ll2.head2.next.next.next = new Node(7);
ll2.head2.next.next.next.next = new Node(2);
LLMergeSort ll3 = new LLMergeSort();
ll3.newHead = null;
merge(head1,head2,newHead);
}
}
誰かが私のプログラムが標準に達していないと感じたら、私はコーディングに新しいです。
あなたのコードが何をしているかはわかりません。多分あなたが解決しようとしている特定の問題を記述します。しかし、 'next.next.next.next'は確かに標準に達していません。 –
コードを実行すると、2つのリンクされたリストが、操作が行われずに接続されます。マージ操作がどこで間違っているのか分かりません。 –
ようこそスタックオーバーフロー!宿題の助けを求めているようです。それ自体に問題はありませんが、これらのことを守ってください(http://meta.stackoverflow.com/questions/334822/how-do-i-ask-and-answer-homework-questions/338845#338845)、それに応じて質問を編集してください。 –