鱼C论坛

 找回密码
 立即注册
查看: 2242|回复: 2

约瑟夫问题循环链表小故障

[复制链接]
发表于 2018-12-16 11:02:21 | 显示全部楼层 |阅读模式

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

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

x
请教dalao约瑟夫问题,我想用循环链表实现,但是要求人数超过10的时候,要十个一行地输出(这是需要解决的问题),该怎么办呢
代码和网上的差不多,只有少量修改,请大佬帮助
#include <stdlib.h>
#include <stdio.h>

#define OK 1
#define ERROR 0
#define OVERFLOW -2
typedef int ElemType;
typedef int Status;
typedef struct LNode {
    ElemType data;
    struct LNode *next;
} LNode;
typedef LNode *LinkList;
LinkList Joseph;

Status InitList_Sq(LinkList L, int n) {
    int i;
    LinkList pNew, pTail;
    for (i = n; i >= 1; --i) {
        pNew = (LinkList) malloc(sizeof(LNode));
        if (NULL == pNew) exit(OVERFLOW);
        pNew->data = i;
        pNew->next = L;
        L = pNew;
        if (i == n)
            pTail = pNew;
    }
    pTail->next = L;
    Joseph = L;
    return OK;
}

Status DoJoseph(LinkList L, int k, int n, int m) {
    LinkList p, pNext;
    int i;
    if (!InitList_Sq(L, n)) exit(OVERFLOW);
    p = Joseph;
    for (i = 0; i < k - 1; ++i)
        p = p->next;
    while (p) {
        for (i = 0; i < m - 2; ++i)
            p = p->next;
        pNext = p->next;
        printf("%d ", pNext->data);
        if (p->next == p)
            p = NULL;
        else {
            p->next = pNext->next;
            p = p->next;
            free(pNext);
        }
    }
    L = NULL;

}

int main(){
    int m,n,k;
    LinkList L;
    L=NULL;
    scanf("%d%d%d",&n, &k, &m);
    if(n<1||m<1||k<1)
        {
                printf("n,m,k must bigger than 0.\n");
        }
        else if(k>n)
        {
                printf("k should not bigger than n.\n");
        }
        else
        {
                InitList_Sq(L,n);
            DoJoseph(L,k,n,m);
        }
   
    return 0;
}
约瑟夫.png
约瑟夫1.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2018-12-16 12:23:40 | 显示全部楼层
现在还剩最后一个问题,如何判断输出项最后一个
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-12-16 12:43:15 | 显示全部楼层
测试用例如下,请问还有好的测试办法吗?
测试用例.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-10-3 00:25

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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