リンクリストをJavaの別の位置にある別のリンクリストにマージします
リンクリストとして2つのデータ構造が与えられます。たとえば、List_1とList_2です。タスクは、リンクリスト「List_2」の要素を別の位置でリンクリスト「List_1」にマージすることです。「List_1」にマージできない要素が残っている場合は、「」として出力されます。 List_2の残りの要素。
例-:
で −
List_1 =
List_2 =
アウト −マージされたリストは-:
説明 −2つのリスト(List_1とList_2)が与えられます。 list_2の可能な要素を別の位置でList_1にマージしました。したがって、List_1でマージした後の要素は、10-> 3-> 2-> 1-> 1-> 4-> 2-> 5-> 5であり、List_2では7->2です。
で −
List_1 =11-> 12-> 13
List_2 =14-> 15-> 16-> 17-> 18
アウト −マージされたリストは-:11-> 14-> 12-> 15-> 13
説明 -List_1とList_2の2つのリストがあります。 list_2の可能な要素を別の位置でList_1にマージしました。したがって、List_1にマージした後の要素は11-> 14-> 12-> 15-> 13であり、List_2の要素は16->17->18です。
以下のプログラムで使用されるアプローチは次のとおりです-
-
リンクリストの最初のノードを指すヘッドノードを作成します。
-
Nodeのクラスを作成して、データメンバーとして値とnextを持つリンクリストを作成します。デフォルトのコンストラクターをNode(int val)として定義し、値をvalとして設定し、nextをNULLとして設定します。
-
add(int updated_value)のメソッド内で、リンクリストに要素を追加します。
-
オブジェクトをnew_nodeとして作成し、updated_valueをデフォルトのコンストラクターに渡します。
-
new_node.nextをheadに設定し、headをnew_nodeに設定します
-
-
mergeList(TutorialPoint list)の関数内
-
オブジェクトをn1_currとして作成し、headに設定し、n2_currをlist.headに設定します
-
n1_nextおよびn2_nextとしてオブジェクトを作成します
-
n1_curr!=null AND n2_curr!=nullとして起動します。 Whileの内部では、n1_nextをn1_curr.nextに、n2_nextをn2_curr.nextに、n2_curr.nextをn1_nextに、n1_curr.nextをn2_currに、n1_currをn1_nextに、n2_currをn2_nextに設定します
-
list.headをn2_currに設定します
-
-
main()メソッド内
-
新しいTutorialPoint()へのTutorialPoint list_1および新しいTutorialPoint()へのTutorialPointlist_2としてオブジェクトを作成します
-
list_1.add(13)、list_1.add(12)、list_1.add(11)としてlist_1に要素を追加します。
-
list_2.add(18)、list_2.add(17)、list_2.add(16)、list_2.add(15)、list_2.add(14)としてlist_2に要素を追加します
-
mergeListメソッドを呼び出して、list_2の要素をlist_1.mergeList(list_2)
としてlist_1にマージします。 -
最終的なリストを出力として印刷します。
-
例
public class TutorialPoint{ Node head; class Node{ int value; Node next; Node(int val){ value = val; next = null; } } void add(int updated_value){ Node new_node = new Node(updated_value); new_node.next = head; head = new_node; } void mergeList(TutorialPoint list){ Node n1_curr = head, n2_curr = list.head; Node n1_next, n2_next; while (n1_curr != null && n2_curr != null){ n1_next = n1_curr.next; n2_next = n2_curr.next; n2_curr.next = n1_next; n1_curr.next = n2_curr; n1_curr = n1_next; n2_curr = n2_next; } list.head = n2_curr; } public static void main(String args[]){ TutorialPoint list_1 = new TutorialPoint(); TutorialPoint list_2 = new TutorialPoint(); list_1.add(13); list_1.add(12); list_1.add(11); list_2.add(18); list_2.add(17); list_2.add(16); list_2.add(15); list_2.add(14); list_1.mergeList(list_2); System.out.println("Merged list is:"); Node temp = list_1.head; while (temp != null){ System.out.print(temp.value + " "); temp = temp.next; } System.out.println(); } }
出力
上記のコードを実行すると、次の出力が生成されます
Merged list is: 11 14 12 15 13 16
-
リンクリストの代替ノードの積
n個のノードがある場合、タスクはリンクリスト内の代替ノードの積を出力することです。プログラムは、ノードの場所を実際に変更せずに、代替ノードの製品のみを印刷する必要があります。 例 Input -: 10 20 30 40 50 60 Output -: 15000 上記の例では、10個の代替ノードである最初のノードから開始すると10、30、50であり、それらの積は10 * 30 * 50=15000です。 上の図では、最初のノードから開始し、赤色のノードが重要ではないノードである場合、青色のノードが代替ノードです。 以下で使用するアプローチは次のとおりです 一時的なポインタを取
-
C++のリンクリストの代替ノードの合計
この問題では、リンクリストが表示されます。私たちのタスクは、リンクリストの代替ノードの合計を出力することです。 リンクリストは、リンクを介して相互に接続された一連のデータ構造です。 では、問題に戻りましょう。ここでは、リンクリストの代替ノードを追加します。これは、ノードが位置0、2、4、6、…であることを追加することを意味します 問題を理解するために例を見てみましょう。 入力 4 → 12 → 10 → 76 → 9 → 26 → 1 出力 24 説明 considering alternate strings