博客
关于我
数据结构-----环形链表
阅读量:79 次
发布时间:2019-02-26

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

????????????????

???????????????????n???????????????????????????????????????????????????

????

???????????????1?n?n???????????????????m??????????????????????????????????????????

????n=5?k=1?m=2???????2?4?1?5?3?

??????

???????????????????????????????????????

  • ???????????????????????????????????????????????????????????????

  • ????????????????????????helper?????????????????????????????????

  • ???????????????????first??m-1?????????????????

  • ???????????????????????????????????first???????????

  • ????????????????????????

  • ????

    package com.wang.linkedlist;
    class Boy {
    private int no;
    private Boy next;
    public Boy(int no) {
    this.no = no;
    this.next = null;
    }
    public int getNo() {
    return no;
    }
    public void setNext(Boy next) {
    this.next = next;
    }
    }
    class CircleSingleLinkedList {
    private Boy first;
    public CircleSingleLinkedList() {
    first = null;
    }
    public void addBoy(int nums) {
    if (nums < 1) {
    System.out.println("nums??????");
    return;
    }
    Boy curBoy = null;
    for (int i = 1; i <= nums; i++) {
    Boy boy = new Boy(i);
    if (i == 1) {
    first = boy;
    first.setNext(first);
    curBoy = first;
    } else {
    curBoy.setNext(boy);
    boy.setNext(first);
    curBoy = boy;
    }
    }
    }
    public void showBoy() {
    if (first == null) {
    System.out.println("?????????");
    return;
    }
    Boy curBoy = first;
    while (true) {
    System.out.println("??????" + curBoy.getNo());
    if (curBoy.getNext() == first) {
    break;
    }
    curBoy = curBoy.getNext();
    }
    }
    public void countBoy(int startNo, int countNum, int nums) {
    if (first == null || startNo < 1 || startNo > nums) {
    System.out.println("????????????");
    return;
    }
    Boy helper = first;
    while (true) {
    if (helper.getNext() == first) {
    break;
    }
    helper = helper.getNext();
    }
    for (int j = 0; j < startNo - 1; j++) {
    helper = helper.getNext();
    }
    Boy current = helper;
    while (nums > 0) {
    for (int i = 0; i < countNum - 1; i++) {
    helper = helper.getNext();
    if (helper == null) {
    helper = first;
    }
    }
    System.out.println("?????" + current.getNo());
    current = current.getNext();
    if (current == null) {
    current = first;
    }
    first = first.getNext();
    helper.setNext(first);
    nums--;
    }
    }
    public static void main(String[] args) {
    CircleSingleLinkedList circleSingleLinkedList = new CircleSingleLinkedList();
    circleSingleLinkedList.addBoy(5);
    circleSingleLinkedList.showBoy();
    circleSingleLinkedList.countBoy(1, 2, 5);
    }
    }

    ????

  • Boy?????????????????????????

  • CircleSingleLinkedList??

    • addBoy(int nums)??????????n????????????
    • showBoy()??????????????????
    • countBoy(int startNo, int countNum, int nums)??????????????
  • ??????????????????????????????????????

  • ??

    ????????????????????????????????????????????????????????????

    转载地址:http://ooik.baihongyu.com/

    你可能感兴趣的文章
    MySQL锁与脏读、不可重复读、幻读详解
    查看>>
    MySQL集群解决方案(4):负载均衡
    查看>>
    mysql颠覆实战笔记(八)--mysql的自定义异常处理怎么破
    查看>>
    MySQL高级-MySQL并发参数调整
    查看>>
    MySQL高级-视图
    查看>>
    MySQL:判断逗号分隔的字符串中是否包含某个字符串
    查看>>
    Nacos在双击startup.cmd启动时提示:Unable to start embedded Tomcat
    查看>>
    Nacos安装教程(非常详细)从零基础入门到精通,看完这一篇就够了
    查看>>
    Nacos配置中心集群原理及源码分析
    查看>>
    nacos配置自动刷新源码解析
    查看>>
    Nacos集群搭建
    查看>>
    nacos集群搭建
    查看>>
    Navicat for MySQL 查看BLOB字段内容
    查看>>
    Neo4j电影关系图Cypher
    查看>>
    Neo4j的安装与使用
    查看>>
    Neo4j(2):环境搭建
    查看>>
    Neo私链
    查看>>
    nessus快速安装使用指南(非常详细)零基础入门到精通,收藏这一篇就够了
    查看>>
    Nessus漏洞扫描教程之配置Nessus
    查看>>
    Nest.js 6.0.0 正式版发布,基于 TypeScript 的 Node.js 框架
    查看>>