public classDemo3 {public static voidmain(String[] args) {

CycleLinkList cycleLinkList=newCycleLinkList();

cycleLinkList.setCycleLinkListLength(10);

cycleLinkList.initCycleLinkList();

cycleLinkList.Josephu(4, 6);

}

}/*** 节点结构*/

classNode {//编号

private intnumber;//指向下一个节点的引用

private Node nextNode=null;//构造函数

public Node(intnumber) {this.number=number;

}//设置nextNode节点

public voidsetNextNode(Node nextNode) {this.nextNode =nextNode;

}//得到nextNode节点

publicNode getNextNode() {returnnextNode;

}//得到编号

public intgetNumber() {returnnumber;

}

}/*** 循环链表*/

classCycleLinkList {//链表的长度

private int length=0;//指向链表头结点的引用

private Node firstNode=null;/*** 设置链表的长度

*@paramlen 链表长度*/

public void setCycleLinkListLength(intlen) {this.length=len;

}/*** 初始化循环链表*/

public voidinitCycleLinkList() {//定义一个临时节点

Node tempNode=null;for(int i=1;i<=length;i++) {//头节点

if(1==i) {

Node headNode=newNode(i);this.firstNode=headNode;

tempNode=headNode;

}else{//尾节点

if(length==i) {

Node node=newNode(i);

tempNode.setNextNode(node);

tempNode=node;//将尾节点的nextNode引用指向链表的头节点firstNode

tempNode.setNextNode(firstNode);

}else{ //其它节点

Node node=newNode(i);

tempNode.setNextNode(node);

tempNode=node;

}

}

}

}/*** 打印循环链表*/

public voidprintCycleLinkList() {

Node tempNode=this.firstNode;do{

System.out.println(tempNode.getNumber());

tempNode=tempNode.getNextNode();

}while (tempNode!=this.firstNode);

}/*** 约瑟夫问题

*@paramk 从第k个人开始报数

*@paramm 数m下*/

public void Josephu(int k, intm) {//判断k的合法性

if( !(k>=1 && k<=this.length) ) {

System.out.println("传入的k不正确");

System.exit(-1);

}//定义一个临时节点

Node tempNode=this.firstNode;//先找到第k个人

for(int i=1;i

tempNode=tempNode.getNextNode();

}//数m下,将数到m的节点从循环链表中删除//有两种情况需要考虑,//第一种:m=1的情形//第二种:除了第一种的特殊情况,其他的只要找到数到m节点的的前一个节点即可,即数m-1下//第一种情形

if(1==m) {//从当前节点依次输出出队序列

int len=this.length;while( (len--)>0) {

System.out.println(tempNode.getNumber());

tempNode=tempNode.getNextNode();

}

}//第二种情形

else{//记录出队的节点数

int cnt=0;do{//数(m-1)下

for(int j=1;j

tempNode=tempNode.getNextNode();

}//出队的节点

System.out.println(tempNode.getNextNode().getNumber());//记录出队的节点数

cnt++;//删除数到m的节点

Node tempNode2=tempNode.getNextNode().getNextNode();

tempNode.setNextNode(tempNode2);//更新tempNode,从数到m的人下一个开始报数

tempNode=tempNode2;

}while (cnt!=this.length);

}

}

}

java 二进制反码_Java学习第五篇:二进制(原码 反码 补码),位运算,移位运算,约瑟夫问题...相关推荐

  1. 【程序员必修数学课】-基础思想篇-二进制-原码反码补码的数学论证

    二进制计数法&原码&反码&补码 Ⅰ 前言 Ⅱ 二进制计数法 A. 什么是二进制计数法? B. 为什么要使用二进制? C. 二进制的位运算 D. 符号位 E. 溢出 Ⅲ 原码&a ...

  2. 二进制原码反码补码详解

    二进制原码反码补码 首先我们在了解什么是原码,反码,补码之前,我们先来谈谈为什么需要有这些,只要原码不行吗? 答案肯定是不行的!

  3. 二进制 原码 反码 补码

    1.原码,反码和补码概念 正数:原码.反码.补码相同: 以123为例: 原码:01111011 反码:01111011 补码:01111011 负数的原码:为取绝对值的数转二进制,然后符号位加一: 负 ...

  4. 负数的二进制 原码反码补码

    https://blog.csdn.net/weixin_38296030/article/details/88353914 问题来源: "为毛   -x=!x+1  ??? 其中x为一任意 ...

  5. 【实验作业】微处理器原理与应用 CPUHomework2.1【二进制 原码 反码 补码 数制转换 典型例题】

    一.选择题 1.一个四位二进制补码的表示范围是(B) A.0-15 B.-8-7 C.-7-7 D.-7-8 2.十进制数- 48 用补码表示为(B) A.10110000 B.11010000 C. ...

  6. Java修炼之凡界篇 筑基期 第02卷 语法 番外1 原码 反码 补码

    原码 反码 补码 博客整理自 原码, 反码, 补码 详解 - ziqiu.zhang - 博客园 (cnblogs.com) 机器数与真值 在学习原码.反码和补码之前,需要先了解什么是机器数,什么是真 ...

  7. java进制原码_Java 一一 进制、原码 反码 补码、移位操作

    进制 二进制 和 十进制 相互转换 十进制 和 十六进制 相互转换 原码,反码,补码 原码.反码.补码: 在计算机内, 有符号数有三种表示法: 原码, 反码, 补码. 所有的数据的运算都是采用 补码 ...

  8. 【软考学习2】数据表示——原码 反码 补码 移码

    原码 反码 补码 移码是软考必考的项目,所以需要对其概念.计算方式和取值范围进行总结. 零.使用场景 原码 反码 补码 移码都是计算机中表示数据的方式,各有所长,对于我们来说,都需要加以学习. 软考中 ...

  9. day017:Java进制转换、原码反码补码、位运算、位移运算符

    一.进制介绍: 1.进制:指进位制,表示某一位置上的数,运算时是逢X进一. 十进制就是逢十进一,二进制就是逢二进一,八进制就是逢八进一. 2.Java中默认的数值都是十进制,如果要输入其他进制,在数值 ...

最新文章

  1. linux普通文件的特点是,linux系统文件系统上有哪些特点
  2. HTML系列(七):多媒体
  3. Matlab中 pdist 函数详解
  4. 如何使用新的Apache Http Client发出HEAD请求
  5. 自由响应和强迫响应和零输入零状态_零偏移有源低通滤波器,第1部分
  6. python基础学习笔记第二天 内建方法(s t r)
  7. Java反序列s ysoserial Spring
  8. python最适合做什么-python适合做什么开发_python未来发展怎么样
  9. C#基础概念面试题(更新中)
  10. 【全网世界区划最全整理输出之第二部分】全世界所有国家的行政区划整理,省市信息,已按照国家,省,市排好序,可直接复制使用,第二部分到8167行,总条数:21088
  11. 【VUE】vue程序设计----模仿网易严选
  12. 《GAMES104-现代游戏引擎:从入门到实践》-05 学习笔记
  13. 谷歌浏览器刷新快捷键
  14. Spring Boot Actuator自定义健康检查
  15. 千兆光模块如何与交换机搭配使用?
  16. 微信小程序调取微信支付遇到的问题“商户号该产品权限未开通,请前往商户平台产品中心检查后重试”
  17. python20培训班
  18. LTE网络-EPC(分组核心网)
  19. Kibana的安装与使用
  20. 计算机网络第七版答案(谢希仁)

热门文章

  1. win10安装中国蚁剑
  2. 脑电图伪差去除matlab,脑电图伪差的识别方法.ppt
  3. hikari数据源配置类_Spring中的“多数据源”之详解
  4. 开关电源仿真与设计基于spice 第2版 中译本_新书推荐 开关电源控制环路设计Christophe Basso 著...
  5. 脚本运行显示服务器超时,java执行shell脚本超时
  6. c语言 文件f指针,C语言文件选择题
  7. python操作memcahed
  8. [iOS]利用通知实现监听系统键盘
  9. iframe标签 父子页面传值
  10. Android中基于Socket的网络通信