中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

c++ listnode的循環檢測方法

c++
小樊
82
2024-07-24 14:24:16
欄目: 編程語言

在C++中,可以使用快慢指針的方法來檢測鏈表中是否存在循環。具體步驟如下:

  1. 定義兩個指針,一個快指針和一個慢指針,初始時都指向鏈表的頭節點。
  2. 慢指針每次移動一步,快指針每次移動兩步。
  3. 如果鏈表中存在循環,則快指針會追上慢指針,即它們會相遇。
  4. 如果鏈表中不存在循環,則快指針會先到達鏈表尾部,此時可以結束循環檢測。

下面是一個示例代碼,用于檢測鏈表中是否存在循環:

#include <iostream>

struct ListNode {
    int val;
    ListNode* next;
    ListNode(int x) : val(x), next(nullptr) {}
};

bool hasCycle(ListNode* head) {
    if (head == nullptr || head->next == nullptr) {
        return false;
    }

    ListNode* slow = head;
    ListNode* fast = head->next;

    while (fast != nullptr && fast->next != nullptr) {
        if (slow == fast) {
            return true;
        }
        slow = slow->next;
        fast = fast->next->next;
    }

    return false;
}

int main() {
    ListNode* head = new ListNode(1);
    head->next = new ListNode(2);
    head->next->next = new ListNode(3);
    head->next->next->next = new ListNode(4);
    head->next->next->next->next = head;  // 創建一個循環

    if (hasCycle(head)) {
        std::cout << "鏈表中存在循環" << std::endl;
    } else {
        std::cout << "鏈表中不存在循環" << std::endl;
    }

    return 0;
}

在上面的示例代碼中,我們創建了一個帶有循環的鏈表,并使用hasCycle函數來檢測鏈表中是否存在循環。如果存在循環,則輸出"鏈表中存在循環";如果不存在循環,則輸出"鏈表中不存在循環"。

0
玉屏| 三亚市| 厦门市| 全州县| 三门县| 梓潼县| 新乡市| 安远县| 平谷区| 彝良县| 舞阳县| 明星| 清流县| 长丰县| 平果县| 界首市| 石嘴山市| 洞头县| 竹山县| 甘德县| 聂荣县| 彰化市| 吴桥县| 镶黄旗| 福海县| 宕昌县| 平昌县| 广州市| 石台县| 鞍山市| 乌兰县| 铜梁县| 云霄县| 客服| 枝江市| 磐安县| 罗平县| 东明县| 福贡县| 柘荣县| 兴宁市|