鱼C论坛

 找回密码
 立即注册
查看: 963|回复: 15

[已解决]约瑟夫问题

[复制链接]
发表于 2022-12-3 17:23:52 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
微信图片_20221203171930.jpg 微信图片_20221203171712.jpg


#include <stdio.h>
#include <stdlib.h>

struct node{
        int date;
        node *next;
};
int main(){
        int n,m;
        scanf("%d %d",&n,&m);
        node *head,*p,*now,*prev;
        head = (node *)malloc(sizeof(node));
        head->date = 1;head->next = NULL;
        now = head;
        for(int i=2;i<=n;i++){
                p = (node *)malloc(sizeof(node));
                p->date=i;p->next = NULL;
                now->next = p;
                now = p;
        }
        now->next = head;
        now = head,prev = head;
        while((n--)>1){
                for(int i=1;i<m;i++){
                        prev = now;
                        now = now->next;
                }
                printf("%d ",now->date);
                prev->next = now->next;
                free(now);
                now = prev->date;
        }
        printf("%d",now->date);
        free(now);
        return 0;
}

为什么我把他换成c语言的他就出问题啦 屏幕截图 2022-12-03 172124.png c语言还不太懂有谁知道吗
最佳答案
2022-12-4 12:45:32
沃斯戈-莎比 发表于 2022-12-3 18:04
为什么我看不到回复啊

可以设置最佳了吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-12-3 17:31:58 | 显示全部楼层

回帖奖励 +30 鱼币

C语言中结构体类型前要加 struct
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-12-3 17:36:53 | 显示全部楼层
【对管理员说的话:别删这个帖子,好吗

你把所有的 node 前面都加上 struct,就像这样:
  1. #include <stdio.h>
  2. #include <stdlib.h>

  3. struct node{
  4.         int date;
  5.         struct node *next;
  6. };
  7. int main(){
  8.         int n,m;
  9.         scanf("%d %d",&n,&m);
  10.         struct node *head,*p,*now,*prev;
  11.         head = (struct node *)malloc(sizeof(struct node));
  12.         head->date = 1;head->next = NULL;
  13.         now = head;
  14.         for(int i=2;i<=n;i++){
  15.                 p = (struct node *)malloc(sizeof(struct node));
  16.                 p->date=i;p->next = NULL;
  17.                 now->next = p;
  18.                 now = p;
  19.         }
  20.         now->next = head;
  21.         now = head,prev = head;
  22.         while((n--)>1){
  23.                 for(int i=1;i<m;i++){
  24.                         prev = now;
  25.                         now = now->next;
  26.                 }
  27.                 printf("%d ",now->date);
  28.                 prev->next = now->next;
  29.                 free(now);
  30.                 now = prev->next; //这里应该是 prev -> next,不应还是 prev -> date
  31.         }
  32.         printf("%d",now->date);
  33.         free(now);
  34.         return 0;
  35. }
复制代码

这是C语言的语法,没办法,但是你还可以这么做,就是用typedef关键字:
  1. #include <stdio.h>
  2. #include <stdlib.h>

  3. typedef struct node{
  4.         int date;
  5.         struct node *next; //但是这里还要加 struct
  6. } node;
  7. int main(){
  8.         int n,m;
  9.         scanf("%d %d",&n,&m);
  10.         node *head,*p,*now,*prev;
  11.         head = (node *)malloc(sizeof(node));
  12.         head->date = 1;head->next = NULL;
  13.         now = head;
  14.         for(int i=2;i<=n;i++){
  15.                 p = (node *)malloc(sizeof(node));
  16.                 p->date=i;p->next = NULL;
  17.                 now->next = p;
  18.                 now = p;
  19.         }
  20.         now->next = head;
  21.         now = head,prev = head;
  22.         while((n--)>1){
  23.                 for(int i=1;i<m;i++){
  24.                         prev = now;
  25.                         now = now->next;
  26.                 }
  27.                 printf("%d ",now->date);
  28.                 prev->next = now->next;
  29.                 free(now);
  30.                 now = prev->next;
  31.         }
  32.         printf("%d",now->date);
  33.         free(now);
  34.         return 0;
  35. }
复制代码

评分

参与人数 1荣誉 +1 收起 理由
hamletroy + 1

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2022-12-3 18:04:00 | 显示全部楼层
为什么我看不到回复啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-12-3 18:10:08 | 显示全部楼层
  1. #include <stdio.h>
  2. #include <stdlib.h>

  3. typedef struct node { // <------------------------------------------------ 注意这里
  4.     int date;
  5.     struct node* next; // <------------------------------------------------ 注意这里
  6. }node; // <------------------------------------------------ 注意这里

  7. int main() {
  8.     int n, m;
  9.     scanf("%d %d", &n, &m);
  10.     node* head, * p, * now, * prev;
  11.     head = (node*)malloc(sizeof(node));
  12.     head->date = 1; head->next = NULL;
  13.     now = head;
  14.     for (int i = 2; i <= n; i++) {
  15.         p = (node*)malloc(sizeof(node));
  16.         p->date = i; p->next = NULL;
  17.         now->next = p;
  18.         now = p;
  19.     }
  20.     now->next = head;
  21.     now = head, prev = head;
  22.     while ((n--) > 1) {
  23.         for (int i = 1; i < m; i++) {
  24.             prev = now;
  25.             now = now->next;
  26.         }
  27.         printf("%d ", now->date);
  28.         prev->next = now->next;
  29.         free(now);
  30.         now = prev->date;
  31.     }
  32.     printf("%d", now->date);
  33.     free(now);
  34.     return 0;
  35. }
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-12-3 18:26:14 | 显示全部楼层
本帖最后由 咦一哈呦呦 于 2022-12-3 18:28 编辑


那个 是我用的DEVc++的问题吗还是和之前的问题一样,就一样的错误   啊呀忘记换号了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-12-3 18:56:10 | 显示全部楼层


我会了我打错了一个东西我是莎比吗   now = prev->next 怎么会是date呢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-12-3 19:50:10 | 显示全部楼层
这啥书啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-12-3 20:44:41 | 显示全部楼层

算法竞赛  罗勇军、郭卫斌
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-12-3 20:46:15 | 显示全部楼层
沃斯戈-莎比 发表于 2022-12-3 20:44
算法竞赛  罗勇军、郭卫斌

楼主也是搞竞赛嘛
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-12-3 22:14:23 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-12-4 11:00:35 | 显示全部楼层
沃斯戈-莎比 发表于 2022-12-3 18:04
为什么我看不到回复啊

现在好了,再看看?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-12-4 11:01:13 | 显示全部楼层

你也打竞赛,加个好友呗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-12-4 12:45:32 | 显示全部楼层    本楼为最佳答案   
沃斯戈-莎比 发表于 2022-12-3 18:04
为什么我看不到回复啊

可以设置最佳了吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-20 13:31

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表