原题链接:[编程入门]链表之报数问题
解题思路:
注意事项:
参考代码:
#include<stdio.h>
typedef struct Link{
int data;
struct Link *next;
}Link;
//循环链表的函数声明
Link *creatlist(int len);
//获得原始编号函数的声明
void Getnum(Link *node,int len);
int main()
{
int n;
scanf("%d",&n);
Link *p;
p=creatlist(n);
Getnum(p,n);
return 0;
}
Link *creatlist(int len){
Link *head,*p,*q;
int i;
head = (Link *)malloc(sizeof(Link));//创建头结点
head->next=NULL;
q=head;
for(i=0;i<len;i++){
p=(Link *)malloc(sizeof(Link));
p->data=1;
q->next=p;
q=p;
}
q->next=head->next;//建立循环
return head;
}
void Getnum(Link *node,int len){
Link *p;
int i,time=0,zero_count=0;
p=node->next;
while(zero_count!=len-1){
zero_count=0;
for(i=0;i<len;i++){
if(p->data==1){
time++;
if(time==3){
p->data=0;
time=0;
}
}
else{
zero_count++;
}
p=p->next;
}
}
for(i=0;i<len;i++){
if(p->data)printf("%d",i+1);
p=p->next;
}
}0.0分
0 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复