civil_dog985 2021-08-17 17:34 采纳率: 50%
浏览 51

约瑟夫环的问题,C++链表

#include <iostream>


using namespace std;
struct node {
    int data;
    struct node* next;
};
int main() {
    int n, m, count, j = 1;
    int answer[100];
    struct node* head, * tail, * p, * q;
    head = (struct node*)malloc(sizeof(struct node*));
    head->next = NULL;
    while (1) {
        cout << "输入n和m!\n";
        cin >> n; cin >> m;
        if (n == 0 || m == 0)
        {
            free(head);
            break;
        }


        else {
            tail = head;//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
            for (int i = 0; i < n; i++) {  //尾插法!
                //q = tail;
                p = (struct node*)malloc(sizeof(struct node*));
                p->data = i + 1;
                tail->next = p;
                p->next = head->next;//切记不要忘记该步骤!形成循环链表!
                                     //将p.next也就是最后一个node的next指向head的next结点也就是head的下一个结点也就是头结点!
                tail = p;//将tail定为最后一个!
            }

            q = tail;//注意是tail而不是head!!因为head没有数据,是头结点!而不是存储数据的首结点!
            p = head->next;
            count = 1;
            while (p != q) {
                if (count == m) {
                    q->next = p->next;
                    free(p);
                    p = q->next;//!注意别忘记了!
                    count = 1;//!注意别忘记了!
                }
                else {
                    q = p;
                    p = p->next;
                    count++;
                }
            }
            //head->next = q;//此处是保留循环链表!若不需要可删去!
            answer[j] = p->data;
            j++;
            free(p);
            head->next = NULL;
        }


    }



    for (int c = 0; c <= j; c++) {
        cout << "大王为: " << answer[c] << endl;
    }


    return 0;
}

1> 已启动生成: 项目: Project9, 配置: Debug Win32
1>plorg.cpp
1>D:\visual studio\C++练习项目\Project9\Project9\plorg.cpp(1,1): warning C4335: 检测到 Mac 文件格式: 请将源文件转换为 DOS 格式或 UNIX 格式
1>D:\visual studio\C++练习项目\Project9\Project9\plorg.cpp(1,10): warning C4067: 预处理器指令后有意外标记 - 应输入换行符
1>MSVCRTD.lib(exe_main.obj) : error LNK2019: 无法解析的外部符号 _main,函数 "int __cdecl invoke_main(void)" (?invoke_main@@YAHXZ) 中引用了该符号
1>D:\visual studio\C++练习项目\Project9\Debug\Project9.exe : fatal error LNK1120: 1 个无法解析的外部命令
1>已完成生成项目“Project9.vcxproj”的操作 - 失败。
生成: 成功 0 个,失败 1 个,最新 0 个,跳过 0 个

  • 写回答

1条回答 默认 最新

  • orange4reg 2021-08-17 18:46
    关注

    这个编译都不通过,暂时不是代码问题。你重新新建选择控制台程序。

    评论

报告相同问题?

问题事件

  • 修改了问题 8月17日
  • 创建了问题 8月17日

悬赏问题

  • ¥15 求caverdock使用教程
  • ¥15 Coze智能助手搭建过程中的问题请教
  • ¥15 12864只亮屏 不显示汉字
  • ¥20 三极管1000倍放大电路
  • ¥15 vscode报错如何解决
  • ¥15 前端vue CryptoJS Aes CBC加密后端java解密
  • ¥15 python随机森林对两个excel表格读取,shap报错
  • ¥15 基于STM32心率血氧监测(OLED显示)相关代码运行成功后烧录成功OLED显示屏不显示的原因是什么
  • ¥100 X轴为分离变量(因子变量),如何控制X轴每个分类变量的长度。
  • ¥30 求给定范围的全体素数p的(p-2)/p的连乘积值