最近写的一个约瑟夫问题
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
typedef struct Node
{
int num;
struct Node *next;
}LinkList;
LinkList *creat(int n)
{
int i = 1;
LinkList *p, *q, *pre;
p = (LinkList*)malloc(sizeof(LinkList));
p->num = i;
pre = p;
for (i = 2; i <= n; i++)
{
q = (LinkList*)malloc(sizeof(LinkList));
q->num = i;
p->next = q;
p = q;
}
p->next = pre;
return pre;
}
void dele(LinkList *L, int m)
{
int i, j;
int temp = 0;
int count = 1;
LinkList *p, *q, *s;
p = L;
q = L;
if (count == 1)
{
for (j = 1; j < m; j++)
{
q = p;
p = p->next;
}
temp = p->num;
printf("%5d", p->num);
count++;
s = p;
q->next = p->next;
p = p->next;
free(s);
}
if(count >1 )
{
while (p->next != p)
{
for (j = 1; j < temp; j++)
{
q = p;
p = p->next;
}
temp = p->num;
printf("%5d", p->num);
s = p;
q->next = p->next;
p = p->next;
free(s);
}
}
printf("%5d", p->num);
}
int main()
{
LinkList *L;
int n, k, m;
printf("请输入人数:");
scanf("%d", &n);
printf("请输入第一个密码:");
scanf("%d", &m);
L = creat(n);
dele(L, m);
getchar();
getchar();
return 0;
}