博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
判断单链表是否有环——LinkedList
阅读量:6608 次
发布时间:2019-06-24

本文共 3168 字,大约阅读时间需要 10 分钟。

hot3.png

好久没有看数据结构相关内容,忽然面试官让写判断链表是否有环,竟然写了半天写不出来,汗~

知道自己有多渣,就好好学习吧

接下来开始写判断链表是否有环的方法吧

1.首先定一个结点类Node

package com.example.demo;public class Node
{ private T val; private Node
next; public Node(T object) { this.val=object; } public void Node(T val) { this.val = val; } public void setVal(T val){ this.val=val; } public T getVal(){ return this.val; } public Node
getNext(){ return this.next; } public void setNext(Node
node) { this.next = node; } }

2.然后链表类

package com.example.demo;import java.util.List;public class LinkList {    private Node root;    private List
list; public LinkList() { } public Node getRoot(){ return this.root; } public List
getList() { return list; } public void setList(List
list) { this.list = list; } public void setRoot(Node node) { this.root = node; } public boolean isExistRound(Node root){ if(root==null){ return false; } if(root.getNext()==null){ return false; } Node p=root; Node q=root.getNext(); while(q!=null){ if(p==q){ return true; } q=q.getNext(); } return false; }}

3.然后是单元测试

package com.example.demo;import org.junit.Assert;import org.junit.Test;import java.util.ArrayList;import java.util.List;public class LinkListTest {    @Test    public void should_return_true_when_link_is_round() {        String str = "1-2-3-4-5-6";        LinkList roundlinkList = createRoundLinkList(str);        Assert.assertEquals(true, roundlinkList.isExistRound(roundlinkList.getRoot()));        LinkList notRoundLinkList=createNotRoundLinkList(str);        Assert.assertEquals(false, notRoundLinkList.isExistRound(notRoundLinkList.getRoot()));    }    @Test    public void should_return_linked_list_value() {        String str = "1-2-3-4-5";        LinkList linkList = createNotRoundLinkList(str);        Node node = linkList.getRoot();        while (node != null) {            System.out.println(node.getVal() + " ");            node = node.getNext();        }    }    public LinkList createRoundLinkList(String str) {        LinkList linkList = createNotRoundLinkList(str);        List
nodeList = linkList.getList(); nodeList.get(nodeList.size()-1).setNext(nodeList.get(0)); linkList.setList(nodeList); return linkList; } public LinkList createNotRoundLinkList(String str) { LinkList linkList = new LinkList(); List
nodeList = new ArrayList<>(); Object[] objects = str.split("-"); for (int i = 0; i < objects.length; i++) { nodeList.add(new Node<>(objects[i])); } linkList.setRoot(nodeList.get(0)); for (int j = 0; j < nodeList.size() - 1; j++) { nodeList.get(j).setNext(nodeList.get(j + 1)); } linkList.setList(nodeList); return linkList; }}

 

转载于:https://my.oschina.net/u/2263272/blog/2354329

你可能感兴趣的文章
Linux下修改Mysql的用户(root)的密码
查看>>
sed的基本用法
查看>>
一个不错的shell 脚本入门教程
查看>>
JVM、GC相关资料
查看>>
dell r620装cenots7遇到的问题
查看>>
Ansible之playbook的使用
查看>>
ansible模块批量管理
查看>>
redis命令 - GET
查看>>
[Maven问题总结]Jetty9的Maven配置——嵌入式服务器
查看>>
httpd.conf的基本设置
查看>>
读一本跟技术无关的书籍
查看>>
RHEL/Centos7新功能
查看>>
Drupal 7 数据库 操作
查看>>
第一部分 思科九年 一(1)
查看>>
DBA日常工作职责
查看>>
Redis的持久化
查看>>
linux安装NFS服务器学习
查看>>
Planner .NET日历日程控件能给你的应用程序提供多种日历日程功能
查看>>
我的友情链接
查看>>
Linux压力测试
查看>>