A27075. 下列C++代码用循环链表解决约瑟夫问题,即假设 n 个人围成一圈,从第一个人开始数,每次数到第 k 个的人就出圈,输出最后留下的那个人的编号。横线上应填写( )。struct Node{ int data; Node* next; }; Node* createcircularList(int n){ Node* head= new Node{1, nullptr}; Node* prev= h…
单选题
困难
知识点
题目描述
下列C++代码用循环链表解决约瑟夫问题,即假设 n 个人围成一圈,从第一个人开始数,每次数到第 k 个的人就出圈,输出最后留下的那个人的编号。横线上应填写( )。
struct Node{
int data;
Node* next;
};
Node* createcircularList(int n){
Node* head= new Node{1, nullptr};
Node* prev= head;
for(inti=2;i<= n; ++i){
Node* node = new Node{i, nullptr};
prev->next= node:
prev = node;
}
prev->next=head;
return head;
}
int fingLastsurvival(int n,int k){
Node* head = createcircularList(n);
Node*p= head;
Node* prev= nullptr;
while(p->next != p){
for(int count=1;count<k;++count){
prev =p;
p= p->next;
}
__________________
}
cout<<"最后留下的人编号是:"<<p->data<< endl;
delete p;
return 0;
}选项(单选)
答案解析
详细答案解析为会员权益,按每日次数查看。
开通 / 升级会员
上一题
下一题