Với một danh sách được liên kết, chúng ta cần xóa phần tử đầu tiên của nó và trả con trỏ về phần đầu của danh sách mới.
Input : 1 -> 2 -> 3 -> 4 -> 5 -> NULL Output : 2 -> 3 -> 4 -> 5 -> NULL Input : 2 -> 4 -> 6 -> 8 -> 33 -> 67 -> NULL Output : 4 -> 6 -> 8 -> 33 -> 67 -> NULL
Trong bài toán đã cho, chúng ta cần xóa nút đầu tiên của danh sách và di chuyển phần đầu của chúng tôi đến phần tử thứ hai và trả lại phần đầu.
Phương pháp tiếp cận để tìm ra giải pháp
Trong vấn đề này, chúng ta có thể di chuyển phần đầu đến vị trí tiếp theo và sau đó giải phóng nút trước đó.
Ví dụ
#include <iostream> using namespace std; /* Link list node */ struct Node { int data; struct Node* next; }; void push(struct Node** head_ref, int new_data) { // pushing the data into the list struct Node* new_node = new Node; new_node->data = new_data; new_node->next = (*head_ref); (*head_ref) = new_node; } int main() { Node* head = NULL; push(&head, 12); push(&head, 29); push(&head, 11); push(&head, 23); push(&head, 8); auto temp = head; // temp becomes head head = head -> next; // our head becomes the next element delete temp; // we delete temp i.e. the first element for (temp = head; temp != NULL; temp = temp->next) // printing the list cout << temp->data << " "; return 0; }
Đầu ra
23 11 29 12
Giải thích về đoạn mã trên
Chúng ta chỉ cần chuyển phần đầu đến phần tử tiếp theo của nó trong chương trình này và sau đó xóa phần tử trước đó và sau đó in danh sách mới. Độ phức tạp về thời gian tổng thể của chương trình nhất định là O (1), có nghĩa là chương trình của chúng tôi không phụ thuộc vào đầu vào đã cho và đó là độ phức tạp tốt nhất mà chúng tôi có thể đạt được.
Kết luận
Trong bài viết này, chúng tôi giải quyết một vấn đề để loại bỏ nút đầu tiên của danh sách liên kết. 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.