一,题目:n个数字(0,1,…,n-1)形成一个圆圈,从数字0开始,每次从这个圆圈中删除第m个数字(第一个为当前数字本身,第二个为当前数字的下一个数字)。当一个数字删除后,从被删除数字的下一个继续删除第m个数字。求出在这个圆圈中剩下的最后一个数字。
二,思路:创建一个循环链表,每次走m步删除一个节点,最后剩下一个
三,源码:
#include <iostream> #include "malloc.h" using namespace std; struct node { int data; node *next; }; node *createList(int a[],int n) { node *head; node *p,*q; head=(node *)malloc(sizeof(node)); head->data=0; head->next=NULL; for(int i=0;i<n;i++) { p=(node *)malloc(sizeof(node)); p->data=a[i]; p->next=NULL; p->next=head->next; head->next=p; } q=head; while(q->next!=NULL) q=q->next; q->next=head; return head; } void display(node *head) { node *p; p=head; cout<<p->data<<endl; while(p->next!=head) { p=p->next; cout<<p->data<<endl; } } void deleteNode(node *head,int m) { node *p,*q; p=head; while(p->next!=head)//p为head前一个节点 p=p->next; while(p->next!=p) { q=p->next; for(int i=1;i<m;i++)//走几步 { p=q; q=q->next; } p->next=q->next;//删除节点 cout<<"delete node is:"<<q->data<<endl; } cout<<"last node is:"<<p->data<<endl; } int main() { int a[10]={1,2,3,4,5,6,7,8,9}; node *head; head=createList(a,9); display(head); //cout<<head->data; deleteNode(head,2); return 0; }
您还没有登录,请您登录后再发表评论
约瑟夫问题【小甲鱼-数据结构-第18讲】 用循环链表解决约瑟夫问题,并把41个人自杀顺序编号输出。代码包括循环链表的建立、初始化、插入、删除等操作。
【信息学竞赛基础训练题单100题】 这些题目主要涵盖了信息学竞赛中的常见问题类型,包括数值计算、逻辑推理、算法设计和数学应用。以下是部分题目详解: 1. **数值计算**: - 第1题:寻找100到999之间等于其每位...
- **实现思路**:通过循环或递归的方式计算斐波那契数列中的第n个数字。 #### 练习题2:质数判断 - **知识点**: - 质数的概念:只能被1和自身整除的大于1的自然数。 - 开平方根技巧:减少不必要的检查次数。 - ...
18. 约瑟夫环问题:这道题考察了学生对约瑟夫环问题的解决,包括计算最后剩下一个人原来的位置。 知识点:约瑟夫环问题、循环语句、输出格式化。 19. 链表操作:这道题考察了学生对链表操作的使用,包括建立链表、...
11. **第二十八题**:选项C。 - 同上。 12. **第二十九题**:选项C。 - 同上。 13. **第三十五题**:答案为2。 - 同上。 14. **第四十题**:选项D。 - 同上。 15. **第四十六题**:可能的答案是A。 - 同上...
- 第十八次考试的调试题: 该程序中,fun函数的逻辑存在错误。`if(m%j==0)`后的`yes=0;`应该在`break`之前,以确保在找到因子时立即跳出循环。同时,fun函数返回值缺失。修正后的代码如下: ```c int fun(int m)...
- **解析**:此题要求对英文句子进行加密,加密逻辑为将英文字母替换为其后第三个字母,非字母字符保持不变。涉及的知识点包括如何遍历字符串中的每个字符,判断字符是否为英文字母,以及如何根据ASCII码进行字符的...
此外,文档中的例子涵盖了基础的程序设计语言语句,如If条件语句,用于实现逻辑判断,如第4题中的三角形面积计算,以及第5题中的数列排序。这些题目锻炼了学生对基本程序结构的理解和应用。 信息学竞赛旨在培养学生...
8. **十六进制转十进制**:第八个程序接收一个十六进制的字符串,并将其转换为十进制数值。通过遍历字符串,根据字符的ASCII码值计算出相应的十进制数值。 9. **约瑟夫环问题**:第九个问题描述的是经典的约瑟夫环...
- 根据题意,第一个人年龄为10岁,则第五个人年龄为18岁。 ### 19. 回文数 **问题描述**:判断一个5位数是否为回文数。 **解题思路**: - 将数字转换为字符串。 - 检查字符串首尾是否相同,逐步向中间移动。 ###...
在“18必做编程题”这个文件中,可能包含了这两个问题的具体实现和其他数据结构相关的编程题目。通过解决这些题目,可以深入理解数据结构的精髓,提高编程能力和算法思维。学习并熟练掌握这些基础算法,对于提升编程...
14. **约瑟夫环问题**:第14题是经典的约瑟夫环问题,需要计算当n按照特定规则减缩到只剩下一个数时,这个数是什么。 解答题部分(略去详细解答): 15. **三角形与向量**:涉及三角形的外接圆、向量平行关系,...
#### 题目三十八:主函数调用 - **知识点**: - 主函数的作用:程序的入口点。 - 函数调用的过程:参数传递、返回值接收等。 - 函数的设计与实现。 #### 题目三十九:级数求和 - **知识点**: - 级数求和的概念...
4. **数制转换**:这是计算机科学的基础,涉及到二进制、八进制、十进制和十六进制之间的转换,理解位权的概念和负数的二进制表示(补码)很重要。 5. **打鱼还是晒网**:这需要理解日期和日历算法,通过计算天数模...
- **第二节:循环队列的表示和实现** - 循环队列的概念及优点。 - 循环队列的表示方式与实现技巧。 - 案例分析:如何使用循环队列来提高内存利用率。 - **第三节:计算表达式的值** - 表达式求值的背景与意义。...
11. **第十一章 外部排序** - 11.1, 11.2, 11.5, 11.11: 描述大文件的排序方法,如多路归并排序和外部内存模型。 大作业部分,学生将被要求选择实习题目进行实践,这些题目涉及约瑟夫环问题、最小生成树问题、马踏...
// i j k 分别为number 的百位、十位、个位 for (int sum; number; number++){ i=number/100; j=(number-i*100)/10; k=number-i*100-j*10; sum=i*i*i+j*j*j+k*k*k; if (sum==number) System.out.println(number...
《妙趣横生的算法(C语言实现)》可作为算法入门人员的教程,也可以作为学习过C语言程序设计的人士继续深造的理想读物,也可作为...第10章 算法设计与数据结构面试题精粹 10.1 常见的算法设计题 10.2 常见的数据结构题
相关推荐
约瑟夫问题【小甲鱼-数据结构-第18讲】 用循环链表解决约瑟夫问题,并把41个人自杀顺序编号输出。代码包括循环链表的建立、初始化、插入、删除等操作。
【信息学竞赛基础训练题单100题】 这些题目主要涵盖了信息学竞赛中的常见问题类型,包括数值计算、逻辑推理、算法设计和数学应用。以下是部分题目详解: 1. **数值计算**: - 第1题:寻找100到999之间等于其每位...
- **实现思路**:通过循环或递归的方式计算斐波那契数列中的第n个数字。 #### 练习题2:质数判断 - **知识点**: - 质数的概念:只能被1和自身整除的大于1的自然数。 - 开平方根技巧:减少不必要的检查次数。 - ...
18. 约瑟夫环问题:这道题考察了学生对约瑟夫环问题的解决,包括计算最后剩下一个人原来的位置。 知识点:约瑟夫环问题、循环语句、输出格式化。 19. 链表操作:这道题考察了学生对链表操作的使用,包括建立链表、...
11. **第二十八题**:选项C。 - 同上。 12. **第二十九题**:选项C。 - 同上。 13. **第三十五题**:答案为2。 - 同上。 14. **第四十题**:选项D。 - 同上。 15. **第四十六题**:可能的答案是A。 - 同上...
- 第十八次考试的调试题: 该程序中,fun函数的逻辑存在错误。`if(m%j==0)`后的`yes=0;`应该在`break`之前,以确保在找到因子时立即跳出循环。同时,fun函数返回值缺失。修正后的代码如下: ```c int fun(int m)...
- **解析**:此题要求对英文句子进行加密,加密逻辑为将英文字母替换为其后第三个字母,非字母字符保持不变。涉及的知识点包括如何遍历字符串中的每个字符,判断字符是否为英文字母,以及如何根据ASCII码进行字符的...
此外,文档中的例子涵盖了基础的程序设计语言语句,如If条件语句,用于实现逻辑判断,如第4题中的三角形面积计算,以及第5题中的数列排序。这些题目锻炼了学生对基本程序结构的理解和应用。 信息学竞赛旨在培养学生...
8. **十六进制转十进制**:第八个程序接收一个十六进制的字符串,并将其转换为十进制数值。通过遍历字符串,根据字符的ASCII码值计算出相应的十进制数值。 9. **约瑟夫环问题**:第九个问题描述的是经典的约瑟夫环...
- 根据题意,第一个人年龄为10岁,则第五个人年龄为18岁。 ### 19. 回文数 **问题描述**:判断一个5位数是否为回文数。 **解题思路**: - 将数字转换为字符串。 - 检查字符串首尾是否相同,逐步向中间移动。 ###...
在“18必做编程题”这个文件中,可能包含了这两个问题的具体实现和其他数据结构相关的编程题目。通过解决这些题目,可以深入理解数据结构的精髓,提高编程能力和算法思维。学习并熟练掌握这些基础算法,对于提升编程...
14. **约瑟夫环问题**:第14题是经典的约瑟夫环问题,需要计算当n按照特定规则减缩到只剩下一个数时,这个数是什么。 解答题部分(略去详细解答): 15. **三角形与向量**:涉及三角形的外接圆、向量平行关系,...
#### 题目三十八:主函数调用 - **知识点**: - 主函数的作用:程序的入口点。 - 函数调用的过程:参数传递、返回值接收等。 - 函数的设计与实现。 #### 题目三十九:级数求和 - **知识点**: - 级数求和的概念...
4. **数制转换**:这是计算机科学的基础,涉及到二进制、八进制、十进制和十六进制之间的转换,理解位权的概念和负数的二进制表示(补码)很重要。 5. **打鱼还是晒网**:这需要理解日期和日历算法,通过计算天数模...
- **第二节:循环队列的表示和实现** - 循环队列的概念及优点。 - 循环队列的表示方式与实现技巧。 - 案例分析:如何使用循环队列来提高内存利用率。 - **第三节:计算表达式的值** - 表达式求值的背景与意义。...
11. **第十一章 外部排序** - 11.1, 11.2, 11.5, 11.11: 描述大文件的排序方法,如多路归并排序和外部内存模型。 大作业部分,学生将被要求选择实习题目进行实践,这些题目涉及约瑟夫环问题、最小生成树问题、马踏...
// i j k 分别为number 的百位、十位、个位 for (int sum; number; number++){ i=number/100; j=(number-i*100)/10; k=number-i*100-j*10; sum=i*i*i+j*j*j+k*k*k; if (sum==number) System.out.println(number...
《妙趣横生的算法(C语言实现)》可作为算法入门人员的教程,也可以作为学习过C语言程序设计的人士继续深造的理想读物,也可作为...第10章 算法设计与数据结构面试题精粹 10.1 常见的算法设计题 10.2 常见的数据结构题