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

Xóa một nút khỏi danh sách được liên kết mà không có con trỏ tiêu đề trong C ++

Trong hướng dẫn này, chúng ta sẽ tìm hiểu cách xóa một nút không có con trỏ tiêu đề trong danh sách được liên kết đơn lẻ.

Hãy xem các bước để giải quyết vấn đề.

  • Viết cấu trúc với dữ liệu và con trỏ tiếp theo.

  • Viết một hàm để chèn nút vào danh sách được liên kết đơn lẻ.

  • Khởi tạo danh sách được liên kết riêng với dữ liệu giả.

  • Lấy một nút từ danh sách được liên kết bằng cách sử dụng con trỏ tiếp theo.

  • Di chuyển nút xóa sang nút tiếp theo.

Ví dụ

Hãy xem mã.

#include <bits/stdc++.h>
using namespace std;
struct Node {
   int data;
   struct Node* next;
};
void deleteNodeWithoutHead(struct Node* deletingNode) {
   if (deletingNode == NULL) {
      return;
   }
   else {
      if (deletingNode->next == NULL) {
         cout << "Can't delete last node without head" << endl;
         return;
      }
      struct Node* temp = deletingNode->next;
      deletingNode->data = temp->data;
      deletingNode->next = temp->next;
      free(temp);
   }
}
void printLinkedList(Node* head) {
   Node* temp = head;
   while (temp) {
      cout << temp->data << " -> ";
      temp = temp->next;
   }
}
void insertNode(struct Node** head_ref, int new_data) {
   struct Node* new_node = new Node();
   new_node->data = new_data;
   new_node->next = (*head_ref);
   (*head_ref) = new_node;
}
int main() {
   struct Node* head = NULL;
   insertNode(&head, 1);
   insertNode(&head, 2);
   insertNode(&head, 3);
   insertNode(&head, 4);
   insertNode(&head, 5);
   insertNode(&head, 6);
   cout << "Linked List before deletion:" << endl;
   printLinkedList(head);
   Node* del = head->next;
   deleteNodeWithoutHead(del);
   cout << "\nLinked List after deletion:" << endl;
   printLinkedList(head);
   return 0;
}

Đầu ra

Nếu bạn chạy đoạn mã trên, thì bạn sẽ nhận được kết quả sau.

Linked List before deletion:
6 -> 5 -> 4 -> 3 -> 2 -> 1 ->
Linked List after deletion:
6 -> 4 -> 3 -> 2 -> 1 ->

Kết luận

Nếu bạn có bất kỳ câu hỏi nào trong hướng dẫn, hãy đề cập đến chúng trong phần bình luận.