public class CircleSinglyLinkList {
private Node head;
CircleSinglyLinkList(){
this.head = null;
}
CircleSinglyLinkList(Node head){
this.head = head;
}
//向表头插入一个值为x的结点
public void insertHead(int x){
Node newNode = new Node(x);
if(this.head == null){
this.head = newNode;
newNode.next = this.head;
}else{
Node last = this.head;
newNode.next = this.head;
this.head = newNode;
while(last.next != newNode.next){
last = last.next;
}
last.next = this.head;
}
}
//向表尾插入一个值为x的结点
public void insertTail(int x){
Node newNode = new Node(x);
if(head == null){
this.head = newNode;
newNode.next = this.head;
}
else {
Node cur = this.head;
while(cur.next != this.head){
cur = cur.next;
}
newNode.next = this.head;
cur.next = newNode;
}
}
public void deleteData(int data){
Node cur = findNode(data);
Node last = this.head; if(cur == null){
return;
}
if(cur == this.head){
while(last.next != this.head){
last = last.next;
}
this.head = cur.next;
last.next = this.head;
cur = null;
return ;
}
Node pre = head;
while(pre.next != cur){
pre = pre.next;
}
pre.next = pre.next.next;
cur = null;
} public Node findNode(int data){
if(head == null){
System.out.println("链表为空");
return null;
}
Node cur = head;
while (cur.next != head && cur.value != data){
cur = cur.next;
}
return cur;
}
@Override
public String toString() {
Node cur = head;
String str = "";
StringBuilder newStr = new StringBuilder("");
while(cur.next != head){
newStr.append(cur.value+"--->");
cur = cur.next;
}
newStr.append(cur.value+"--->头");
return newStr.toString();
} public static void main(String[] args) {
CircleSinglyLinkList circleSinglyLinkedList= new CircleSinglyLinkList();
// Josephus
int peopleNum = 10;
int each = 3;
int count = 1;
for (int i = 0; i < peopleNum; i++) {
circleSinglyLinkedList.insertTail(i+1);
}
// System.out.println(circleSinglyLinkedList.toString());
Node another = circleSinglyLinkedList.head;
Node pre = another;
while(true){
if(another.next == another){
break;
}
if(count%3 == 0){
pre = another.next;
circleSinglyLinkedList.deleteData(another.value);
count++;
another = pre;
System.out.println(circleSinglyLinkedList.toString());
}else{
another = another.next;
count++;
} }
//// circleSinglyLinkedList.deleteData(0);
// circleSinglyLinkedList.deleteData(1);
// circleSinglyLinkedList.insertHead(1);
//// circleSinglyLinkedList.deleteData(1);
// circleSinglyLinkedList.insertTail(2);
//// System.out.println(circleSinglyLinkedList.findNode(1).value);
//// circleSinglyLinkedList.deleteData(1);
//// circleSinglyLinkedList.deleteData(90);
// circleSinglyLinkedList.deleteData(1);
// System.out.println(circleSinglyLinkedList.toString());
}
}

这个是java语言的实现,(我写的),没有写很多功能,但是基本的有了,可以实现那个算法了。注意的问题都在c语言里面解释了。

单循环链表(基于java语言)的更多相关文章

  1. 基于JAVA语言的多线程技术

    1.简介 多线程技术属于操作系统范围内的知识: 进程与线程 可以这么理解,一个应用程序就是一个进程,在一个进程中包含至少一个线程:进程就是线程的容器,真正工作.处理任务的是线程. 进程是操作系统分配资 ...

  2. JFinal -基于Java 语言的MVC极速 web 开发框架

    JFinal概述 JFinal 是基于Java 语言的极速 web 开发框架,其核心设计目标是开发迅速.代码量少.学习简单.功能强大.轻量级.易扩展.Restful.在拥有Java语言所有优势的同时再 ...

  3. 基于Java语言开发jt808、jt809技术文章精华索引

    很多技术开发人员喜欢追逐最新的技术,如Node.js, go等语言,这些语言只是解决了某一个方面,如只是擅长异步高并发等等,却在企业管理后台开发方面提供的支持非常不够,造成项目团队技术选项失败,开发后 ...

  4. 【数据结构】之链表(Java语言描述)

    以前写过一篇帖子,记录了链表在C语言中的描述代码.C语言中没有链表的直接实现,因此,我们需要自己编写代码实现.请参考[我的这篇文章]. Java中默认为我们提供了链表的API—— LinkedList ...

  5. 《神经网络算法与实现-基于Java语言》的读书笔记

    文章提纲 全书总评 读书笔记 C1.初识神经网络 C2.神经网络是如何学习的 C3.有监督学习(运用感知机) C4.无监督学习(自组织映射) Rreferences(参考文献) 全书总评 书本印刷质量 ...

  6. 基于java语言的给cube添加custom view来实现权限控制

    今天是农历2014年的最后一个工作日了,在这里提前祝大家新年快乐.羊年大吉!当然本人今天也拿出来点儿真东西,做为献给大家的新年礼物,依次共勉. 下文主要讲述的是使用Java代码来完成对cube基于部门 ...

  7. 基于JAVA语言的selenium测试基础总结

    目录一.基本语句1.循环控制(break,continue)3.字符的替换(replace,repalceFirst,replaceAll,regex)4.字符串的连接("+",a ...

  8. Selenium(基于JAVA语言)-》在eclipse上运行web项目在Mac系统上启动时提示nodename nor servname provided解决办法

    最近使用eclipse进行自动化测试时,遇到一种情况,无法调起浏览器,且有报错,如下: org.openqa.selenium.WebDriverException: failed to lookup ...

  9. 基于JAVA语言的selenium总结

    目录一.基本语句 1.循环控制(break,continue) 3.字符的替换(replace,repalceFirst,replaceAll,regex) 4.字符串的连接("+" ...

随机推荐

  1. Java用n种方法编写实现双色球随机摇号案例

    方法清单 规则 实现方式一 实现方式二 实现方式三 实现方式四 实现方法五 之前我用JavaScript编写过一个实现双色球随机摇号的案例, 点击此处查看,今天我再用Java语言来实现这一效果. 规则 ...

  2. docker | jenkins 实现自动化CI/CD,后端躺着把运维的钱挣了!(下)

    前言 在上一篇文章中,我们使用docker编写Dockerfile文件,将我们自己的项目构建成镜像,然后发布到Docker Hub中,并且用自己的云服务器拉取Docker Hub上我们自己上传的项目镜 ...

  3. MyBatis加强(4)~mybatis 插件开发

    一.插件介绍[动态代理] 1.插件[动态代理]:mybatis 允许在已经映射的语句的执行过程的某个时机进行拦截增强的机制. 2.mybatis中的组件动态代理的运用: MyBatis 在四大组件对象 ...

  4. 基于TMS320C6670的软件无线电核心板

    一.板卡概述 北京太速科技自主研发的TMS320C6670核心板,采用TI KeyStone系列的四核定点/浮点DSP TMS320C6670作主处理器.板卡引出处理器的全部信号引脚,便于客户二次开发 ...

  5. 编译安装&打包压缩&定时任务

    内容概要 编译安装 打包压缩 定时任务 内容详细 一.编译安装 1.特点 使用源代码,编译打包软件. ​ 1.可以自定制软件 ​ 2.按需构建软件啊 2.步骤 下载安装包 wget 下载网址 如果没有 ...

  6. Solution -「CF 1586F」Defender of Childhood Dreams

    \(\mathcal{Description}\)   Link.   定义有向图 \(G=(V,E)\),\(|V|=n\),\(\lang u,v\rang \in E \Leftrightarr ...

  7. Solution -「NOI 2021」「洛谷 P7740」机器人游戏

    \(\mathcal{Description}\)   Link.   自己去读题面叭~ \(\mathcal{Solution}\)   首先,参悟[样例解释 #2].一种暴力的思路即为钦定集合 \ ...

  8. Solution -「UNR #5」「UOJ #671」诡异操作

    \(\mathcal{Desciprtion}\)   Link.   给定序列 \(\{a_n\}\),支持 \(q\) 次操作: 给定 \(l,r,v\),\(\forall i\in[l,r], ...

  9. 从命令模式的维度理解Spring 之Application Event

    Spring的事件(Application Event)为Bean与Bean之间的信息通讯提供了支持.当一个Bean处理完一个任务之后,希望另一Bean指定并能做相应的处理,这时我们就需要让另外一个B ...

  10. jenkins针对不同用户显示不同项目

    网上看了别人写的博客有点头晕 比如:https://www.cnblogs.com/kazihuo/p/9022899.html  典型的权限混乱,te用户可以读re用户的项目,re用户可以读te用户 ...