解题思路:
分享一个链表
注意事项:
参考代码:
#include<stdio.h>
#include<stdlib.h>
struct node
{
int no;
struct node*next;
};
int main()
{
int i,k;struct node*head,*p,*q;
int n,m;
while(scanf("%d%d",&n,&m)!=EOF)
{
head=(struct node*)malloc(sizeof(struct node));
head->no=-1;
head->next=head;
for(i=n;i>0;i--) //生成循环链表
{
p=(struct node*)malloc(sizeof(struct node));
p->next=head->next;p->no=i;head->next=p;
}
printf("\nThe original circle is :");
while(p->next!=head) //找到表头节点 并跳过表头节点
p=p->next;
p->next=head->next; //节点删除操做 *p->30
for(i=0;i<n-1;i++)
{
for(k=1;k<m;k++)
p=p->next;
q=p->next; //p的下一个节点是要出列的节点
p->next=q->next; //循环链表跳过要出列的节点
// printf("%3d",q->no); //输出q节点的编号
free(q); //释放q节点
}
printf("\n%d",p->no);
}
printf("\n");
return 0;
}
0.0分
0 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复