下列C++代码用循环链表解决约瑟夫问题,即假设n个人围成一圈,从第一个人开始数,每次数到第 $k$ 个的人就出圈,输出最后留下的那个人的编号。横线上应填写( )。

td187467 单选题 共 个子题
struct Node {
    int data;
    Node* next;
};

Node* createCircularList(int n) {
    Node* head = new Node{1, nullptr};
    Node* prev = head;
    for (int i = 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;
}
A
prev->next = p->next;
delete p;
p = prev->next;
B
delete p;
prev->next = p->next;
p = prev->next;
C
delete p;
p = prev->next;
prev->next = p->next;
D
prev->next = p->next;
p = prev->next;
delete p;
正在加载题目数据…
已答 /
子题
该题型需在试卷/作业中作答,单题练习暂不支持
答案解析
讨论
发布
登录后参与讨论 立即登录
发布讨论需先绑定并验证手机号 去绑定手机号
加载中…
我
我
回复 @
回复 @
发送
还没有人讨论,来发表第一条吧