elfighting 2021-09-27 21:12 采纳率: 50%
浏览 30

【C++环形链表】报数问题

题目:国庆节临近,某企业老板想给员工们发放礼物,但是发礼物的顺序并没有决定,所以老板决定将员工们编号为1,2,3…m,员工们(m个)按照1-m的顺序围坐一圈。从第1个开始数,每数到第n个,这个员工就会拿到礼物并离开此圈,并从下一个员工开始重复该过程,直到所有人都拿到礼物。输入m和n,输出最后一个拿到礼物的员工编号。

下面是我的代码,在VS上成功运行,且尝试的情况都正确输出;但提交到oj上一直显示错误,请问哪里存在问题?


#include<iostream>
using namespace std;
class list;
class node {
    friend list;
public:
    node(int i) { num = i; next = NULL; }
    node* getnext() { return next; }
    void removeafter() {
        node* p = next;
        next = next->next;
        delete p;
    }
private:
    int num;
    node* next;
};
class list {
public:
    list() { head = tail = NULL; }
    list(node* p) { head = tail = p; }
    list(int m) {
        node* it = new node(1);
        node* before = it;
        head = it;
        for (int i = 2; i <= m; i++) {
            it = new node(i);
            before->next = it;
            before = it;
        }
        tail = it;
        tail->next = head;
    }
    ~list() {
        node* q = tail;
        node* p = head;
        while (p != q) {
            q->next = p->next;
            delete p;
            p = q->next;
        }
        delete tail;
    }
    int length();
    int last(int m);
private:
    node* head, * tail;
};
int list::length() {
    if (head == NULL)
        return 0;
    int n = 1;
    node* it = head;
    while (it != tail) {
        it = it->next;
        n++;
    }
    return n;
}
int list::last(int n) {
    node* p = tail;
    node* q = head;
    while (p != q) {
        for (int i = 1; i < n; i++) {
            p = p->next;
            q = q->next;
        }
        p->next = q->next;
        delete q;
        q = p->next;
    }
    return p->num;
}
int main() {
    int m, n;
    cin >> m >> n;
    if (m <= 0 || n <= 0) {
        cout << "invalid input!\n";
        return 0;
    }
    list* thelist = new list(m);
    cout << endl << thelist->last(n);
}
  • 写回答

1条回答 默认 最新

  • CSDN专家-link 2021-09-27 21:18
    关注

    cout << endl << thelist->last(n);
    应该是
    cout << thelist->last(n)<< endl;吧

    评论

报告相同问题?

问题事件

  • 创建了问题 9月27日

悬赏问题

  • ¥15 Opencv(C++)异常
  • ¥15 VScode上配置C语言环境
  • ¥15 汇编语言没有主程序吗?
  • ¥15 这个函数为什么会爆内存
  • ¥15 无法装系统,grub成了顽固拦路虎
  • ¥15 springboot aop 应用启动异常
  • ¥15 matlab有关债券凸性久期的代码
  • ¥15 lvgl v8.2定时器提前到来
  • ¥15 qtcp 发送数据时偶尔会遇到发送数据失败?用的MSVC编译器(标签-qt|关键词-tcp)
  • ¥15 cam_lidar_calibration报错