#include<stdio.h>
#include<stdlib.h>
#include<string.h>
const int n = 41;
typedef struct {
int data;
struct Node* next;
}Node, * CircleList;
void InitList(CircleList L)
{
L->data = NULL;
L->next = NULL;
printf("初始化成功\n");
}
void DeleteList(CircleList L, int i)// 删除表中第i个元素
{
CircleList head = (CircleList*)malloc(sizeof(CircleList));
CircleList r = (CircleList*)malloc(sizeof(CircleList));
head = L;
r = &head;
int j = 0;
while (r && (i - 1) > j)
{
r = r->next;
j++;
}
CircleList m = (CircleList*)malloc(sizeof(CircleList));
r->next=m;
r->next = m->next;
free(m);
L = head;
free(r);
printf("del ok\n");
}
void Add(CircleList L) {//初始化人的序号
int a;
CircleList head = (CircleList*)malloc(sizeof(CircleList));
CircleList c = (CircleList*)malloc(sizeof(CircleList));
head->data = 1;
head->next = NULL;
c =&head;
int i = 0;
for (i = 2; i < n+1; i++)
{
CircleList p = (CircleList*)malloc(sizeof(CircleList));
p->data = i;
p->next = NULL;
c->next=p;
c = c->next;
}
c->next = head;
L =& head;
printf("add ok\n");
}
int Live(CircleList L) //返回存活的人的编号
{
int total = n;
int j = 1;
int count = 0;
CircleList head= (CircleList*)malloc(sizeof(CircleList));
head = L;
CircleList p = (CircleList*)malloc(sizeof(CircleList));
p =&head;
for (j; j < total; j++)
{
if (total <=2)
{
return p->data;
break;
}
p = p->next;
count++;
int judge = (count + 1) % 3;
if (judge) {
DeleteList(head, count); total--;
}
}
}
int main()
{
CircleList L=NULL;
InitList(&L); //传地址
Add(&L);
DeleteList(&L, 2);
printf("%d", Live(L));
return 0;
}
这个c语言代码总是报错,为什么呢,怎么改啊
