Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

ลบโหนดสุดท้ายของรายการที่เชื่อมโยงโดยใช้ 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 และภาษาอื่นๆ เราหวังว่าคุณจะพบว่าบทความนี้มีประโยชน์