环形链表实现约瑟夫问题 java语言
来源:互联网 发布:通用软件无线电平台 编辑:程序博客网 时间:2024/05/17 07:01
约瑟夫问题:已知n个人(以编号1,2,3...n分别表示)围坐在一张圆桌周围。从编号为k的人开始报数,数到m的那个人出列;他的下一个人又从1开始报数,数到m的那个人又出列;依此规律重复下去,直到圆桌周围的人全部出列,剩下一个人。
public class Juseph{public static void main(String[] args){SysLink syslink = new SysLink();syslink.setNodeLen(10);syslink.createLink();syslink.setBeginNo(5);syslink.setM(5);syslink.showLink();syslink.start();}}//环形链表类class SysLink{//节点数private int nodeLen=0;//从第几个节点开始数数private int beginNo;//数几下private int m;//第一个节点Node firstNode = null;//设置游标Node temp = null;//设置节点数public void setNodeLen(int len){this.nodeLen = len;}//设置数几下public void setM(int m){this.m = m ;}//设置从第几个节点开始数public void setBeginNo(int n){this.beginNo = n ;}//创建环形链表public void createLink() {//循环创建每个节点 for(int i = 1;i <= nodeLen;i++) { //当创建第一个节点时或者只有一个节点 if(i==1) { Node node=new Node(i); //将firstNode节点指向新创建的第一个节点 this.firstNode = node; //将temp节点指向新生成的节点 this.temp = node; //将生成的节点指向头节点 node.next = firstNode; }else { //当不是最后一个节点时 if (i!=nodeLen){ //新生成节点 Node node = new Node(i); //将temp的下一个节点指向新生成的节点 this.temp.next = node; //并将temp节点下移 this.temp = node;} //最后一个节点 else{ Node node = new Node(i); temp.next = node ; temp = node ; //将新生成节点指向第一个节点,形成环 node.next = firstNode;} } } }//开始public void start(){//找到开始数的节点//从第一个节点开始Node temp=this.firstNode;for (int i = 1; i < beginNo; i++){temp = temp.next ;}while(nodeLen!=1){//数几下for (int j = 0; j < m-1; j++){temp = temp.next;}//找到temp前一个节点Node temp2 = temp ;while (temp2.next!=temp){temp2= temp2.next;}//将temp除去temp2.next = temp.next;System.out.println("出圈的人是:"+temp.no);temp = temp.next ;this.nodeLen--;}System.out.println("最后剩下的是:"+temp.no);}//打印链表public void showLink(){Node temp = this.firstNode;//当只有一个节点时if (temp.next.no == 1){System.out.println(temp.no);}else{while (temp.next!=firstNode){System.out.println(temp.no);temp = temp.next;}}System.out.println(temp.no);}}//节点类class Node{//节点的编号int no;//创建节点类型Node next=null;//构造函数public Node(int no){this.no=no;}}
- 环形链表实现约瑟夫问题 java语言
- 环形链表+约瑟夫问题实现
- Java环形链表--约瑟夫问题
- 环形链表,约瑟夫问题,(7)
- 使用环形链表实现约瑟夫环
- Java语言解决约瑟夫环问题(链表实现)
- 约瑟夫环形算法 用c语言实现
- 链表问题(4)-- 环形单链表的约瑟夫问题
- 链表问题---环形单链表的约瑟夫问题
- 约瑟夫问题java语言实现代码
- 约瑟夫问题c、Java语言实现
- 约瑟夫问题(环形链表解题)
- C语言实现环形链表
- Java——环形单链表的约瑟夫问题
- java实现约瑟夫问题
- java实现约瑟夫问题
- 约瑟夫问题 java 实现
- Java实现约瑟夫问题
- VM Ware 安装fedora 9 系统
- jsp面试收集
- Tracking-Learning-Detection TLD解析三 - Learning学习(跟踪与检测的协调与更新)
- java 反射
- RVMDK环境下STM32的链接过程
- 环形链表实现约瑟夫问题 java语言
- c# 字符串格式化ToString()总结
- 在Eclipse下调试NS
- IOS音频处理介绍-待编辑
- 设计模式(10)---->策略模式
- The Balance + 拓展欧基里德
- Ethernet_t
- linq to sql 语法
- maven插件