C ++
 Computer >> コンピューター >  >> プログラミング >> C ++

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、その他の言語などの他の言語で作成できます。この記事がお役に立てば幸いです。


  1. C++のリンクリストの代替ノードの合計

    この問題では、リンクリストが表示されます。私たちのタスクは、リンクリストの代替ノードの合計を出力することです。 リンクリストは、リンクを介して相互に接続された一連のデータ構造です。 では、問題に戻りましょう。ここでは、リンクリストの代替ノードを追加します。これは、ノードが位置0、2、4、6、…であることを追加することを意味します 問題を理解するために例を見てみましょう。 入力 4 → 12 → 10 → 76 → 9 → 26 → 1 出力 24 説明 considering alternate strings

  2. リンクリスト内のノードの最初の出現を削除するC#プログラム

    以下は、ノードを含むLinkedListリストです。 string [] students = {"Katie","Jennifer","Amy","Vera"}; LinkedList<string> list = new LinkedList<string>(students); 次に、文字列要素「Vera」を持つノードを削除しましょう。 そのためには、Remove()メソッドを使用します。 list.Remove("Vera"); 例 using System;