日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

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

發布時間:2023/12/15 java 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java 二进制反码_Java学习第五篇:二进制(原码 反码 补码),位运算,移位运算,约瑟夫问题... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

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学习第五篇:二进制(原码 反码 补码),位运算,移位运算,约瑟夫问题...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。