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

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

王林
王林転載
2023-08-30 19:09:031220ブラウズ

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

単一リンク リストがあり、私たちのタスクはリンク リストから最後のノードを削除することです。この問題では、指定されたリンク リストをたどって最後のノードを削除するだけです。

解決策を見つける方法

この方法では、指定されたリンク リストをたどって、前のノードと現在のノードを追跡します。現在のノードが最後のノードになると、前 -> 次を NULL に変更し、現在のノードを削除します。

#include <iostream>
using namespace std;

struct Node {
   int data;
   struct Node* next;
};
void push(struct Node** ref, int new_data) { // pushing the node
   struct Node* new_n = new Node;
   new_n->data = new_data;
   new_n->next = (*ref);
   (*ref) = new_n;
}
int main() {
   Node* head = NULL;
   push(&head, 12);
   push(&head, 29);
   push(&head, 11);
   push(&head, 23);
   push(&head, 8);
   auto curr = head, prev = head;
   if (!curr || !curr -> next) // if list only has one element or the list is empty
      cout << "Empty\n";
   else {
      while (curr) { // while curr != NULL
         if (!curr -> next) {
            prev -> next = NULL;
            delete(curr); // freeing the space
            break;
         }
         prev = curr;
         curr = curr -> next; // moving to the next node
      }
   }
   for (Node* temp = head; temp != NULL; temp = temp->next) // printing the data
      cout << temp->data << " ";

   return 0;
}

出力

8 23 11 29

上記のコードの説明

このメソッドでは、現在のノードを追跡しながら配列を反復処理し、前のノード。現在のノードが最後のノードになると、前→次を NULL に変更し、現在のノードを削除します。指定されたプログラムの全体的な時間計算量は O(N) です。ここで、N は指定されたリストのサイズです。

時間計算量 - O(N)

N: 指定された配列のサイズ

結論

この記事では、指定されたリンク リストから最後のノードを削除する問題を解決しました。また、この問題に対する C プログラムと、それを解決するための完全なアプローチについても学びました。同じプログラムを C、Java、Python などの他の言語で書くことができます。この記事がお役に立てば幸いです。

以上がC++ を使用してリンク リストの最後のノードを削除するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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