解题思路:
        分享一个链表
注意事项:

参考代码:

#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分

0 人评分

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

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

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

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

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

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

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

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

评论列表 共有 0 条评论

暂无评论