単一リンク リストがあり、私たちのタスクはリンク リストから最後のノードを削除することです。この問題では、指定されたリンク リストをたどって最後のノードを削除するだけです。
この方法では、指定されたリンク リストをたどって、前のノードと現在のノードを追跡します。現在のノードが最後のノードになると、前 -> 次を 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 サイトの他の関連記事を参照してください。