ホームページ >バックエンド開発 >C++ >C++ を使用してリンク リストの最初のノードを削除する

C++ を使用してリンク リストの最初のノードを削除する

WBOY
WBOY転載
2023-09-22 09:17:081483ブラウズ

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++ を使用してリンク リストの最初のノードを削除するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はtutorialspoint.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。