约瑟夫环c语言代码

/* 此为小程序多文件的写法,有 joseph.c joseph.h main.c makefile 四个文件 */
//<joseph.c>
#include <stdio.h>
#include <stdlib.h>
#include "joseph.h"

joseph *joseph_insert(int num)
{
    joseph *l = NULL;
    joseph *p = NULL;
    joseph *new = NULL;
    int i = 1;

    l = malloc(sizeof(joseph));
    l->id = i;

    p = l;

    sprintf(l->id, "%d", i);

    for(i = 1; i <=10 ; i++)
    {
        new = malloc(sizeof(LLIST));
        new->id = i;
        sprintf(new->id, "%d", i);
        new->next = l;
        p->next = new;
        p = new;
    }
    return l;

}


void joseph_display(joseph *l)
{
    joseph *p;

    for(p = l; p != l; p = p->next)
        printf("%d\n", p->id);
}

int joseph_play(joseph *p, int i , int j)
{
    joseph *p = l;

    LLIST *p = NULL;

// p = _find(*l, find_data);

    for(i = 1; i < 4; i++)
    {
        while(i == 3)
        {

        }
    }

    for(p = l; p != l; p = p->next)
    {
        if(p->id == );
            return p;
    }

    if(p == NULL)
        return -1;
    if(p == *l)
    {
        *l = (*l)->next;
        free(p);
    }
    else
    {
        while(back->next != p)
            back = back->next;
        back->next = p->next;
        free(p);
    }

    printf("Bingo! l->id = %d\n",i);

    return 0;
}
//----------------------------------------------------------------------------------------------------------
//<joseph.h>

#ifndef __JOSEPH_H
#define __JOSEPH_H

typedef struct llist
{
    int id;
    struct llist *next;
}joseph;

joseph *joseph_insert(int);

void joseph_display(joseph *);

int joseph_play(joseph *, int , int);

#endif

//----------------------------------------------------------------------------------------------------------
//<main.c>

#include <stdio.h>
#include "joseph.h"

int main(void)
{
    joseph *l = NULL;
    int peo_num = 0;
    int kill_num = 0;
    int alive = 0;

    printf("Please Insert People Number : ");
    scanf("%d", &peo_num);
    l = joseph_insert(peo_num);//插入
    printf("=======================================\n");
    joseph_display(l);//遍历
    printf("=======================================\n");
    printf("Please Insert Kill Number : ");
    scanf("%d", &kill_num);
    alive = joseph_play(l, peo_num, kill_num);//玩游戏
    printf("=======================================\n");
    printf("Alive : %d\n", alive);

    return 0;
}
//----------------------------------------------------------------------------------------------------------
//<makefile>
main : main.o joseph.o
    gcc -o $@ $^
clean :
    rm -rf *.o main























    原文作者:约瑟夫环问题
    原文地址: https://blog.csdn.net/weixin_42864391/article/details/82011074
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞