第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定

判斷一個(gè)單鏈表是否存在環(huán)

標(biāo)簽:
Java Android

问题:如题,判断一个单链表是否存在环

分析:判断一个单链表是否存在环,问题情况分为如下

  • 首尾相连
  • 尾部与非首结点相连
  • 不存在环路

给出的算法图示

image


package com.newcaoguo.main.rxjavademo;

import java.util.Scanner;

/**
 * 判断一个单链表是否存在环
 */
public class LinkedListLoop {
    static class Node {
        int val;
        Node next;

        public Node() {

        }
    }

    private static final Node createLinkedListNode(Scanner scanner) {
        Node node = new Node();
        Node p = node;
        int val = scanner.nextInt();
        while (val != -1) {
            p.val = val;
            p.next = new Node();
            p = p.next;
            val = scanner.nextInt();
        }
        return node;
    }

    private static final void printLinkedListNode(Node node) {
        Node p = node;
        while (p != null) {
            System.out.print(p.val + " ");
            p = p.next;
        }
    }

    /**
     * 判断单链表是否存在环
     *
     * @param node
     * @return
     */
    private static final boolean isExitLoop(Node node) {
        Node p = node; // p 指向 单链表的第一个
        Node q = node.next;// q 指向 单链表的第二个
        // 如果 p 与 q 不相等 ,并且 p 不为空、q 不为空
        while (p != q && p != null && q != null) {
            p = p.next;
            q = q.next.next;
            if (p == q) return true;
        }
        return false;
    }

    public static void main(String[] args) {
        Node firstNode = new Node();
        firstNode.val = 1;
        Node secondNode = new Node();
        secondNode.val = 2;
        firstNode.next = secondNode;
        Node thirdNode = new Node();
        thirdNode.val = 3;
        secondNode.next = thirdNode;
        Node forthNode = new Node();
        forthNode.val = 4;
        thirdNode.next = forthNode;
        Node fifthNode = new Node();
        fifthNode.val = 5;
        forthNode.next = fifthNode;
//        fifthNode.next = thirdNode; // 形成闭环
        fifthNode.next = null; // 不形成闭环
//        printLinkedListNode(firstNode); // 输出单链表信息
        System.out.println("isExitLoop: " + isExitLoop(firstNode)); // 输出是否存在闭环
    }
}


點(diǎn)擊查看更多內(nèi)容
1人點(diǎn)贊

若覺得本文不錯(cuò),就分享一下吧!

評(píng)論

作者其他優(yōu)質(zhì)文章

正在加載中
感謝您的支持,我會(huì)繼續(xù)努力的~
掃碼打賞,你說多少就多少
贊賞金額會(huì)直接到老師賬戶
支付方式
打開微信掃一掃,即可進(jìn)行掃碼打賞哦
今天注冊(cè)有機(jī)會(huì)得

100積分直接送

付費(fèi)專欄免費(fèi)學(xué)

大額優(yōu)惠券免費(fèi)領(lǐng)

立即參與 放棄機(jī)會(huì)
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)

舉報(bào)

0/150
提交
取消