解题思路:

圈刚好是一个单项循环链表,每次出圈就是free掉一个链表结点


注意事项:


链表操作要细心


参考代码:

#include <stdio.h>

#include <stdlib.h>

typedef struct node{

int data;

struct node* next;

}list,*listp;

void creatlist(listp L,int n);

void printlist(listp L);

listp quitlist(listp L,int m);

int main()

{

int n,m;

while(scanf("%d%d",&n,&m)==2){

listp L=(listp)malloc(sizeof(list));

if(L==NULL)

exit(-1);

L->next=NULL;

creatlist(L,n);


listp p=quitlist(L,m);

printlist(p);

}

return 0;

}

void creatlist(listp L,int n)

{

int i;

L->data=1;

listp p=L;

for(i=2;i<=n;i++){

listp q=(listp)malloc(sizeof(list));

q->data=i;

p->next=q;

p=q;

}

p->next=L;

}

void printlist(listp L)

{

listp p=L;

do{

printf("%d ",p->data);

p=p->next;

}while(p!=L);

}

listp quitlist(listp L,int m)

{

listp q,p=L;

int temp=m-1;

while(p->next!=p){

while(temp--){

q=p;

p=p->next;

}

q->next=p->next;

p->next=NULL;

free(p);

temp=m-1;

p=q->next;

}

return p;

}


点赞(0)
 

0.0分

0 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 0 条评论

暂无评论