原题链接:[编程入门]链表之报数问题
解题思路:
学了最基础的链表知识就很容易理解了,参考王道的数据结构上面的链表代码,重点就是删除嘛。
参考代码:
#include<stdio.h> #include<stdlib.h> typedef struct LNode{ int number; struct LNode* next; }LNode,*LinkList; //创建循环链表,千万不要创建头结点,我当时脑子短路卡住了,直接从第一个数据开始就好了 void createInitLink(LinkList *L,int n){ (*L)=(LNode*)malloc(sizeof(LNode)); (*L)->number=1; (*L)->next=NULL; LNode *s,*r=*L; int i; for(i=2;i<=n;i++){ s=(LNode*)malloc(sizeof(LNode)); s->number=i; r->next=s; r=s; } r->next=*L; } int getFinnal(LinkList L,int m){ LNode *p=L; LNode *q; int i; while(p->next!=p){ for(i=1;i<m-1;i++){ p=p->next; } q=p->next; p->next=q->next; free(q); p=p->next; } return p->number; } int main(){ int n; scanf("%d",&n); LinkList L; createInitLink(&L,n); int result=getFinnal(L,3); printf("%d",result); return 0; }
0.0分
0 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复