华为2011年校园招聘上机笔试:约瑟夫环问题
需积分: 10 12 浏览量
更新于2024-07-21
收藏 343KB PDF 举报
"2011华为上机题汇总——包含数据结构与算法的笔试题"
在2011年华为的校园招聘上机笔试中,数据结构和算法是重点考察的领域,具体表现为一道约瑟夫环问题。约瑟夫环问题是一个经典的计算机科学问题,它源于一个古老的数学游戏,涉及到了链表操作和循环链表的概念。
题目描述了一个有n个人围坐成一圈,从编号为k的人开始报数,每数到m的人将出列,然后下一个人继续从1开始报数,直到所有人都出列为止。这个问题可以通过使用循环链表来解决,链表中的每个节点代表一个人,节点的值为其编号。
首先,`creat`函数用于创建一个循环链表,表示n个人的序列。这个函数接收一个整数n作为参数,表示人数。它通过动态分配内存创建一个新的链表节点,并通过迭代将所有节点连接起来,最后使链表尾节点指向链表头,形成一个循环链表。
接下来,`fun`函数实现约瑟夫环问题的核心逻辑。这个函数接收两个参数,一个是链表头指针L,另一个是整数m,表示报数的间隔。函数内部使用一个循环来模拟报数过程,每次报数时,移动指针p来指向下一个报数的人,当报数到m时,记录这个人(编号),然后从链表中删除他,继续下一轮报数,直到链表为空。
在主函数`main`中,我们初始化了链表大小(n=9)和报数间隔(m=5),调用`creat`函数创建链表,然后调用`fun`函数处理约瑟夫环问题。这个例子展示了如何将实际问题转化为计算机程序,以及如何利用数据结构(链表)和算法(循环、遍历)来解决问题。
此外,提供的代码片段中还包含了一个未完成的`verifyMsisdn`函数,用于验证一个国际移动用户识别号码(IMSI)的合法性,这可能涉及到字符串处理和特定格式的检查,但在此场景中并未给出完整的实现。
通过这类题目,华为旨在考察应聘者的编程能力、逻辑思维以及对基础数据结构和算法的掌握程度,这些都是IT行业中必不可少的技能。解决此类问题需要对链表操作、循环控制、内存管理和基本算法设计有深入的理解。
2012-09-02 上传
174 浏览量
277 浏览量
237 浏览量
点击了解资源详情
277 浏览量
11416 浏览量
suchuchengznb
- 粉丝: 0
- 资源: 9
最新资源
- dejalist:Dejalist Android应用程序背后的开源代码-Android application source code
- java毕业设计-基于SSM的社区疫情签到管理系统源码+数据库.zip
- leetcode答案-leetcode-answers:这是一个存储leetcode答案的项目。Leetcode是一个专门针对程序员面试的在线
- hiera-eyaml:Hiera的后端,它提供敏感数据的按值非对称加密
- 基于STM32的温度测量系统.zip
- 国际收支分析
- Freedominthesky.GitHub.io
- Ziarmandhost
- Sign_Language_Interpreter:Android应用程序源代码-Android application source code
- JobPriorityQueue:基于优先级的作业队列,可以更好地处理Android项目的不同类型的作业
- leetcode答案-code-challenges:代码挑战
- CIS2348-Ratner
- 策略培训 英文版(十二)
- 51单片机STC89C52RC开发板例程之模拟广告牌字体流动显示.rar
- SafeSlinger-Android:SafeSlinger Android客户端应用程序的开源代码-Android application source code
- google-react-maps:一种使用React的Google Maps API的新方法