约瑟夫环用循环链表实现
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
typedef struct Node
{
int data;
struct Node *next;
}Node,*LinkList;
void InitCLinkList(LinkList *CL);
void CreatCLinkList(LinkList CL,int n);
Node *delete_List(Node *head,int m);
void InitCLinkList(LinkList *CL)
{
*CL=(LinkList)malloc(sizeof(Node));
(*CL)->next=NULL;
(*CL)->data=1;
}
void CreatCLinkList(LinkList CL,int n)
{
Node *rear,*s;
int i;
rear=CL;
for(i=1;i<n;i++)
{
s=(LinkList)malloc(sizeof(Node));
s->data=i+1;
rear->next=s;
rear=s;
}
rear->next=CL;
return CL;
}
/*void deleteLink(Node *L,int m)
{
Node *p=L,*temp;
int i=0;
for(i=0;i<m-2;i++)
{
p=p->next;
}
temp=p->next;
p->next=temp->next;
free(temp);
return p->next;
}*/
Node *delete_List(Node *head,int m)
{
Node *prior=head;
Node *temp=NULL;
for(int i=0;i<m-2;i++)
{
prior=prior->next;
}
temp=prior->next;
prior->next=temp->next;
printf("%d\n",temp->data);
free(temp);
return prior->next;
}
void main()
{
int n,m;
scanf("%d %d",&n,&m);
Node *CL;
InitCLinkList(&CL);
CreatCLinkList(CL,n);
while(n>1)
{
CL=detete_List(CL,m);
n--;
}
printf("%d",CL->next->data);
return 0;
}
一直报错说delete_List未定义,但我不是定义了吗