该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
#include
#include
typedef int DATATYPE;
typedef struct node
{
DATATYPE data;
struct node *next;
}LoopList;
LoopList* creat_looplist()
{
LoopList *L;
L = (LoopList *)malloc(sizeof(LoopList));
L->next = L;
return L;
}
int insert_looplist(LoopList *L,DATATYPE data)
{
LoopList *p;
p = L;
LoopList *temp;
temp = (LoopList*)malloc(sizeof(LoopList));
temp->data = data;
temp->next = p->next;
p->next = temp;
return 0;
}
LoopList * cut_head_looplist(LoopList*L)
{
LoopList *p = L;
while(p->next != p)
p = p->next;
p->next = L->next;
free(L);
return p->next;
}
DATATYPE found (LoopList *L,int m,int k)
{
int i;
DATATYPE data;
LoopList *temp,*p;
p = L;
for(i = 0;i
p = p->next;
while(p->next != p)
{
for(i = 0;i < m-2;i ++)
{
p = p->next;
}
temp = p->next;
data = temp->data;
p->next = temp->next;
free(temp);
p = p->next;
printf("%d ",data);
}
return 0;
}
int main(int argc, const char *argv[])
{
LoopList *L;
int i;
int m=4,n=8,k=3;
L=creat_looplist();
for(i=n;i>0;i--)
{
insert_looplist(L,i);
}
L=cut_head_looplist(L);
found(L,m,k);
return 0;
}