Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Kiểm tra danh sách liên kết vòng (Circular Linked List) C++

Danh sách liên kết vòng: nút cuối trỏ về head. Kiểm tra bằng cách lưu head, duyệt qua next, nếu gặp NULL → không vòng, nếu gặp lại head → vòng.

Ví dụ minh họa

#include <iostream>
using namespace std;

class Node {
public:
    int data;
    Node* next;
};

Node* getNode(int data) {
    Node* newNode = new Node;
    newNode->data = data;
    newNode->next = NULL;
    return newNode;
}

bool isCircularList(Node* start) {
    if (start == NULL) return true; // rong coi la vong
    Node* node = start->next;
    while (node != NULL && node != start)
        node = node->next;
    return (node == start);
}

int main() {
    Node* start = getNode(10);
    start->next = getNode(20);
    start->next->next = getNode(30);
    start->next->next->next = getNode(40);
    start->next->next->next->next = getNode(50);
    start->next->next->next->next->next = start; // tao vong
    
    if (isCircularList(start))
        cout << "Danh sach la vong";
    else
        cout << "Danh sach KHONG la vong";
}

Kết quả

Danh sach la vong