java循环单链表实现约瑟夫环问题

来源:互联网 发布:霜叶知秋 编辑:程序博客网 时间:2024/05/12 16:18
package SingleLinkList;//节点类class Node{private int data;private Node next;public int getData() {return data;}public void setData(int data) {this.data = data;}public Node getNext() {return next;}public void setNext(Node next) {this.next = next;}public Node(int data,Node next) {this.data=data;this.next=next;}}//链表类public class YueSeFu {private Node head;//头节点private Node tail;//尾指针private int length;public YueSeFu(){head=new Node(-1,null);length=0;}//头插法建立单链表public void addhead(int item){Node node=new Node(item,null);//node=(Node *)malloc(sizeof(node))node.setNext(head.getNext());//node->next=head->next;head.setNext(node);//head->next=node;length++;}//尾插法建立单链表public void addtail(int item){Node node=new Node(item,null);if(length==0){head.setNext(node);tail=node;//tail.setNext(null);length++;return;}//while(tail.getNext()!=null){//tail=tail.getNext();//}tail.setNext(node);tail=node;length++;}public void addcircleLink(int item){Node node=new Node(item,head.getNext());if(length==0){head.setNext(node);tail=node;length++;return;}tail.setNext(node);tail=node;length++;}//输出单链表public void printList(){Node temp=head.getNext();while(temp!=null){System.out.print(temp.getData()+" ");temp=temp.getNext();}System.out.println("length="+length);}//输出循环链表public void printcircleList(){Node temp=head.getNext();if(length==1){System.out.print(temp.getData()+" ");return;}int i=0;while(i<length*3){System.out.print(temp.getData()+" ");temp=temp.getNext();i++;}System.out.println("length="+length);}public void yuesefu(int begin,int num){Node p=head;int i=1;while(i<begin){//先定位到开始报数位置p=p.getNext();i++;}while(p!=p.getNext()){for(int j=1;j<num;j++){//报数开始p=p.getNext();}System.out.println("出局者="+p.getNext().getData());p.setNext(p.getNext().getNext());//删除出局者}System.out.println("胜利者是="+p.getData());}//测试public static void main(String[] args) {YueSeFu list=new YueSeFu();//构造约瑟夫环for(int i=0;i<41;i++){//list.addhead(i+1);list.addcircleLink(i+1);}int begin=1;int num=3;list.yuesefu(begin, num);}}

0 0
原创粉丝点击