當前位置:首頁 » 編程語言 » 約瑟夫環java

約瑟夫環java

發布時間: 2023-03-09 20:22:32

java循環單鏈表實現約瑟夫環

看了你的代碼,不是很明白,給你提幾個建議吧:

1、不需要tail節點

2、remove方法應該對刪除節點前面的節點操作,而不是使用數字找

給你我修改的LinkList類,你參考一下:

publicclassLinkList{
privateNodehead;
intcurlen=0;

//創建鏈表
publicvoidcreatelist(intcode)throwsException{
insert(curlen,code);
}

publicvoidinsert(inti,intcode)throwsException{
Nodes=newNode(code);
if(i==0){
s.setNext(head);
head=s;
}
Nodep=head;
intj=0;
while(p!=null&&j<i-1){
p=p.getNext();
j++;
}
if(j>i||p==null){
thrownewException("插入位置不合理");
}
s.setNext(p.getNext());
p.setNext(s);
// tail=s;
// tail.setNext(head);
curlen=curlen+1;
}

publicvoidremove(inti)throwsException{
Nodep=head,q=null;
intj=0;
i=i-1;
while(j<i){
q=p;
p=p.getNext();
j++;
}
if(j>i||p==null)
thrownewException("刪除位置不合法");
if(q==null){
// tail.setNext(p.getNext());
head=head.getNext();
}else
q.setNext(p.getNext());
curlen=curlen-1;
}
/**
*按照節點刪除
*@parami
*@throwsException
*/
publicvoidremove(Nodep)throwsException{
if(p.getNext()==p){
p=null;
head=null;
}
else{
Nodeq=p.getNext();
p.setNext(q.getNext());
}
curlen=curlen-1;
}

publicvoidout(intm)throwsException{
Nodep=head;
if(m==1){
System.out.print("按照順序出列");
return;
}
intcount=1;
intn=m-1;
while(curlen>0){
if(count==n){
System.out.print(p.getNext().getData()+"");
remove(p);
count=1;
}else{
count++;
}
p=p.getNext();
}

}

publicvoiddisplay(){
Nodenode=head;
for(inti=0;i<2*curlen;i++){
System.out.print(node.getData()+"");
node=node.getNext();
}
System.out.println();
}
}
熱點內容
看本子壓縮器 發布:2024-11-06 21:34:33 瀏覽:967
md5加密演算法代碼 發布:2024-11-06 21:31:01 瀏覽:162
tpshop商城源碼 發布:2024-11-06 21:30:45 瀏覽:843
單本小說網站源碼 發布:2024-11-06 21:11:17 瀏覽:546
mtp緩存 發布:2024-11-06 21:06:43 瀏覽:21
P40存儲卡 發布:2024-11-06 21:02:15 瀏覽:921
大容量鐵電存儲器 發布:2024-11-06 21:02:12 瀏覽:451
淘寶課腳本 發布:2024-11-06 21:00:41 瀏覽:688
網路機櫃和伺服器櫃有什麼不同 發布:2024-11-06 20:50:11 瀏覽:965
戰地5如何查看所有伺服器 發布:2024-11-06 20:46:42 瀏覽:654