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

โปรแกรม C++ สำหรับลบโหนดแรกใน Singly Linked List ที่กำหนด

Linked list เป็นโครงสร้างข้อมูลเชิงเส้นที่มีโหนดหลายตัวที่เชื่อมต่อกัน แต่ละโหนดประกอบด้วยสองฟิลด์ - Data Field และที่อยู่ของโหนดถัดไป

สมมติว่าเรามี singly linked list และเราต้องลบโหนดแรกจาก linked list นี้ ตัวอย่างเช่น

อินพุต 1

4 → 3 → 2 → 1

เอาต์พุต

3 → 2 → 1 →

คำอธิบาย

'4' เป็นโหนดแรกใน singly linked list ที่กำหนด หลังจากลบโหนดแรก linked list จะเป็น 3→2→1

อินพุต 2

1 → 2 → 3 →

เอาต์พุต

2 → 3 →

คำอธิบาย

หลังจากลบโหนดแรก '1' linked list จะเป็น 2 → 3

วิธีการแก้ปัญหา

เริ่มต้นเรามี linked list ที่ประกอบด้วยโหนด แต่ละโหนดมีข้อมูลและที่อยู่ไปยังโหนดถัดไป หลังจากแทรกข้อมูลใน linked list เราจะสร้างฟังก์ชันเพื่อลบโหนดแรก

ดังนั้น เราจะสร้าง temporary pointer ที่ชี้ไปที่ head เริ่มต้น และย้าย head ไปที่โหนดถัดไป ตอนนี้ลบ temporary node และคืนค่า linked list

  • ฟังก์ชัน deleteAtHead(node*& head) รับ pointer ไปยัง head และลบโหนดแรกของ linked list
  • สร้าง temporary pointer ที่ชี้ไปที่ head เริ่มต้น
  • Head ย้ายไปที่โหนดถัดไป
  • ลบ temporary pointer
  • คืนค่า linked list

ตัวอย่างโค้ด

#include <iostream>
using namespace std;

class Node {
public:
    int data;
    Node* next;
    Node(int d) {
        data = d;
        next = NULL;
    }
};

void insertAtFirstNode(Node* &head, int data) {
    Node* n = new Node(data);
    n->next = head;
    head = n;
}

void print(Node* head) {
    while (head != NULL) {
        cout << head->data << "->";
        head = head->next;
    }
    cout << endl;
}

void deleteAtFirst(Node* &head) {
    if (head == NULL) {
        return;
    }
    Node* temp = head;
    head = head->next;
    delete temp;
    return;
}

int main() {
    Node* head = NULL;
    insertAtFirstNode(head, 1);
    insertAtFirstNode(head, 2);
    insertAtFirstNode(head, 3);
    insertAtFirstNode(head, 4);
    deleteAtFirst(head);
    print(head);
    return 0;
}

ผลลัพธ์

การรันโค้ดด้านบนจะสร้างเอาต์พุตเป็น

3 → 2 → 1 →

เนื่องจาก singly linked list ที่กำหนดคือ 4 → 3 → 2 → 1 → หลังจากลบโหนดแรกซึ่งคือ 4 linked list จะกลายเป็น 3 → 2 → 1 →