"华为_TCL_微软等名企笔试面试题改.doc:指针编程及数据结构题解"
5星 · 超过95%的资源 需积分: 11 12 浏览量
更新于2024-01-11
2
收藏 149KB DOC 举报
众多名企(华为_阿卡_TCL_索尼_微软_百度_大唐)笔试面试题(C居多含C 及数据结构)改.doc;众多名企(华为_阿卡_TCL_索尼_微软_百度_大唐)笔试面试题(C居多含C 及数据结构)改.doc 是一份包含众多名企的笔试面试题的文档,主要涉及C语言和数据结构方面的问题。其中一道来自上海华为的题目是关于指针的编程题。
题目要求我们写一个函数 int Func(int* A, int nSize),该函数的功能是将数组 A 中的 0 移至数组的后面,将非0整数移至数组的前面,并保持非0整数的相对顺序不变。函数应该返回原数组中第一个元素为0的下标。
在设计这个函数时,需要考虑到尽可能不使用辅助空间、效率和异常问题。以下是一种可能的设计思路:
首先需要遍历整个数组,统计数组中0的个数,以及找到非0整数的下标位置。可以使用一个变量count来记录0的个数,并使用一个变量m来表示数组中的元素。
通过一个while循环,当m不为0时,执行以下操作:count自增1,m等于m除以10。循环结束后,count的值就是数组中0的个数。
接下来,我们再次遍历数组,将非0整数放到数组的前面,并保持其相对顺序不变。这可以通过将非0整数依次向前移动count个位置来实现。我们可以使用一个指针p来记录当前的位置。
在遍历数组时,当遇到非0整数时,将其赋值给指针p所指向的位置,然后将指针p移动count个位置。这样就完成了将非0整数移动到数组前面的操作。
最后,我们将数组中的后count个位置上的元素全部置为0。这表示我们将0移动到了数组的后面。
最后,我们返回原数组中第一个元素为0的下标。由于我们在遍历的过程中已经统计了0的个数,所以我们可以直接返回count作为结果。
通过这种设计思路,我们可以在不使用辅助空间的情况下,高效地完成将0移动到数组后面,将非0整数移动到数组前面,并保持非0整数的相对顺序不变的操作。
总结来说,上海华为的关于指针的编程题是要求我们设计一个函数,将数组中的0移动到数组的后面,将非0整数移动到数组的前面,并保持非0整数的相对顺序不变。我们在设计函数时需要考虑尽可能不使用辅助空间、效率和异常问题。通过统计0的个数和使用指针移动元素的方式,我们可以实现这个功能。
2013-07-15 上传
2011-09-23 上传
点击了解资源详情
2009-03-20 上传
2009-03-14 上传
2010-04-28 上传
fjp790308446
- 粉丝: 1
- 资源: 19
最新资源
- 黑板风格计算机毕业答辩PPT模板下载
- CodeSandbox实现ListView快速创建指南
- Node.js脚本实现WXR文件到Postgres数据库帖子导入
- 清新简约创意三角毕业论文答辩PPT模板
- DISCORD-JS-CRUD:提升 Discord 机器人开发体验
- Node.js v4.3.2版本Linux ARM64平台运行时环境发布
- SQLight:C++11编写的轻量级MySQL客户端
- 计算机专业毕业论文答辩PPT模板
- Wireshark网络抓包工具的使用与数据包解析
- Wild Match Map: JavaScript中实现通配符映射与事件绑定
- 毕业答辩利器:蝶恋花毕业设计PPT模板
- Node.js深度解析:高性能Web服务器与实时应用构建
- 掌握深度图技术:游戏开发中的绚丽应用案例
- Dart语言的HTTP扩展包功能详解
- MoonMaker: 投资组合加固神器,助力$GME投资者登月
- 计算机毕业设计答辩PPT模板下载