#include
using namespace std;
struct Node
{
int date;
Node *next;
};
void josephbicycle(Node* p,int n,int k,int m)
{
Node* head=p;
Node* start=p; //游戏开始位置
int cnt=0;//计数用的
int count=0;
while(1) //将链表头尾相连成约瑟夫环
{
if(p->next==NULL)
{
p->next=head;
break;
}
else
p=p->next;
}
for(Node* tmp=head;cntnext)
{
start=tmp;
cnt++;
}
cnt=0;
if(m==1) //判断离开,删除离开成员的指针
{
for(Node* tmp=start;cntnext)
{
cout<next->date< cnt++;
}
}
else
{
cnt=1;
while(1)
{
cnt++;
if(cnt==m)
{
count++;
cout<next->next->date< start->next->next=start->next->next->next;
cnt=1;
}
if(count==n)
break;
start=start->next;
}
}
}
int main()
{
Node *p,*head;
p=new Node;
head=p;
int n,date;
cout<<"请输入数组所包含元素个数n:";
cin>>n;
cout<<"请输入各个元素,用空格隔开:";
for(int i=1;i<=n;i++)
{
cin>>date;
p->date=date;
if(i{
p->next=new Node;
p=p->next;
}
if(i==n)
p->next=NULL;
}
josephbicycle(head,n,1,4);
return 0;
}
满意请采纳!不懂可以问,不满意可以修改!
import java.util.ArrayList;
import java.util.List;
public class Test {
public static void main(String arng []){
Listlist1 = new ArrayList ();
Listlist2 = new ArrayList ();
list1.add(-1);
list1.add(3);
list1.add(8);
list1.add(6);
list1.add(5);
list1.add(20);
int i = -1;
while(list1.size()>0){
i+=4;
if(list1.size()==1){
i=0;
}
else{
while(i>=list1.size()){
i=i-list1.size()-1;
}
}
list2.add(list1.get(i));
list1.remove(i);
}
for(int j=0;jSystem.out.println(list2.get(j));
}
}
}
Java写的,望采纳,都是简单的语句,就不加备注了
tongyiloushagnguandian
你们都是人才 ·······这多人来回答···