C++を使用してリンクリストの最初のノードを削除します
リンクリストを指定したら、最初の要素を削除して、新しいリストの先頭へのポインタを返す必要があります。
Input : 1 -> 2 -> 3 -> 4 -> 5 -> NULL Output : 2 -> 3 -> 4 -> 5 -> NULL Input : 2 -> 4 -> 6 -> 8 -> 33 -> 67 -> NULL Output : 4 -> 6 -> 8 -> 33 -> 67 -> NULL
与えられた問題では、リストの最初のノードを削除し、頭を2番目の要素に移動して、頭を返す必要があります。
解決策を見つけるためのアプローチ
この問題では、ヘッドを次の場所に移動してから、前のノードを解放できます。
例
#include <iostream> using namespace std; /* Link list node */ struct Node { int data; struct Node* next; }; void push(struct Node** head_ref, int new_data) { // pushing the data into the list struct Node* new_node = new Node; new_node->data = new_data; new_node->next = (*head_ref); (*head_ref) = new_node; } int main() { Node* head = NULL; push(&head, 12); push(&head, 29); push(&head, 11); push(&head, 23); push(&head, 8); auto temp = head; // temp becomes head head = head -> next; // our head becomes the next element delete temp; // we delete temp i.e. the first element for (temp = head; temp != NULL; temp = temp->next) // printing the list cout << temp->data << " "; return 0; }
出力
23 11 29 12
上記のコードの説明
このプログラムでヘッドを次の要素に移動し、前の要素を削除してから、新しいリストを印刷する必要があります。与えられたプログラムの全体的な時間計算量はO(1)です。これは、プログラムが与えられた入力に依存しないことを意味し、達成できる最高の複雑さです。
結論
この記事では、リンクリストの最初のノードを削除する問題を解決します。また、この問題のC ++プログラムと、解決した完全なアプローチについても学びました。同じプログラムを、C、java、python、その他の言語などの他の言語で作成できます。この記事がお役に立てば幸いです。
-
C++のリンクリストの代替ノードの合計
この問題では、リンクリストが表示されます。私たちのタスクは、リンクリストの代替ノードの合計を出力することです。 リンクリストは、リンクを介して相互に接続された一連のデータ構造です。 では、問題に戻りましょう。ここでは、リンクリストの代替ノードを追加します。これは、ノードが位置0、2、4、6、…であることを追加することを意味します 問題を理解するために例を見てみましょう。 入力 4 → 12 → 10 → 76 → 9 → 26 → 1 出力 24 説明 considering alternate strings
-
リンクリスト内のノードの最初の出現を削除するC#プログラム
以下は、ノードを含むLinkedListリストです。 string [] students = {"Katie","Jennifer","Amy","Vera"}; LinkedList<string> list = new LinkedList<string>(students); 次に、文字列要素「Vera」を持つノードを削除しましょう。 そのためには、Remove()メソッドを使用します。 list.Remove("Vera"); 例 using System;