亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

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
嵊州市| 济南市| 利津县| 龙山县| 白水县| 获嘉县| 扶余县| 莲花县| 四川省| 鞍山市| 顺昌县| 会宁县| 阳信县| 平罗县| 军事| 五台县| 潢川县| 苍溪县| 平安县| 巴里| 湖北省| 成都市| 正阳县| 当涂县| 大丰市| 二连浩特市| 额敏县| 恩施市| 新巴尔虎右旗| 浦江县| 五大连池市| 霍林郭勒市| 沙湾县| 新野县| 云南省| 长宁区| 山阳县| 辽阳县| 特克斯县| 胶南市| 民县|