java 单链表约瑟夫环_java循环单链表实现约瑟夫环问题
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
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
p=p.getNext();
i++;
}
while(p!=p.getNext()){
for(int j=1;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);
}
}
總結
以上是生活随笔為你收集整理的java 单链表约瑟夫环_java循环单链表实现约瑟夫环问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java中删除sqlite数据库语句_s
- 下一篇: java西游记壹_岩浆数码再现手机RPG