當前位置:首頁 » 編程語言 » 約瑟夫環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();
}
}
熱點內容
java返回this 發布:2025-10-20 08:28:16 瀏覽:598
製作腳本網站 發布:2025-10-20 08:17:34 瀏覽:890
python中的init方法 發布:2025-10-20 08:17:33 瀏覽:584
圖案密碼什麼意思 發布:2025-10-20 08:16:56 瀏覽:768
怎麼清理微信視頻緩存 發布:2025-10-20 08:12:37 瀏覽:688
c語言編譯器怎麼看執行過程 發布:2025-10-20 08:00:32 瀏覽:1015
郵箱如何填寫發信伺服器 發布:2025-10-20 07:45:27 瀏覽:259
shell腳本入門案例 發布:2025-10-20 07:44:45 瀏覽:118
怎麼上傳照片瀏覽上傳 發布:2025-10-20 07:44:03 瀏覽:808
python股票數據獲取 發布:2025-10-20 07:39:44 瀏覽:716