Computer >> Máy Tính >  >> Lập trình >> C ++

Loại bỏ nút cuối cùng của danh sách được liên kết bằng C ++

Chúng tôi được cung cấp một danh sách liên kết riêng và chúng tôi có nhiệm vụ xóa nút cuối cùng khỏi danh sách đó. Trong vấn đề này, chúng tôi chỉ đơn giản là duyệt qua danh sách đã cho và chỉ cần loại bỏ nút cuối cùng.

Phương pháp tiếp cận để tìm ra giải pháp

Trong cách tiếp cận này, chúng tôi xem qua danh sách đã cho và chúng tôi theo dõi nút trước đó và nút hiện tại. Bây giờ khi nút hiện tại của chúng ta trở thành nút cuối cùng, chúng ta thay đổi trước -> bên cạnh NULL và xóa nút hiện tại.

Ví dụ

#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;
}

Đầu ra

8 23 11 29

Giải thích về đoạn mã trên

Trong cách tiếp cận này, chúng tôi duyệt qua mảng, theo dõi nút hiện tại và nút trước đó. Bây giờ khi nút hiện tại của chúng ta trở thành nút cuối cùng, chúng ta thay đổi trước -> bên cạnh NULL và xóa nút hiện tại. Độ phức tạp thời gian tổng thể của chương trình đã cho là O (N), trong đó N là kích thước của danh sách đã cho của chúng tôi.

Độ phức tạp về thời gian - O (N)

N:Kích thước mảng của chúng ta

Kết luận

Trong bài viết này, chúng tôi giải quyết vấn đề Xóa nút cuối cùng khỏi danh sách liên kết đã cho. Chúng tôi cũng đã học chương trình C ++ cho vấn đề này và cách tiếp cận hoàn chỉnh mà chúng tôi đã giải quyết. Chúng ta có thể viết cùng một chương trình bằng các ngôn ngữ khác như C, java, python và các ngôn ngữ khác. Chúng tôi hy vọng bạn thấy bài viết này hữu ích.