C/C++培训
达内IT学院
400-996-5531
内联函数INline和宏定义一起使用的区别。
正确答案:
内联函数是在编译的时候已经做好将对应的函数代码替换嵌入到对应的位置,适用于代码较少的函数。 宏定义是简单的替换变量,如果定义的是有参数的函数形式,参数不做类型校验。
1、已知n个人(以编号1,2,3,...,n分别表示)围坐在一张圆桌周围,从编号为k的人开始报数,数到m的那个人出列,他的下一个人又从k开始报数,数到m的那个人出列,依次重复下去,直到圆桌的人全部出列。试用C++编写实现。
解析:本题就是约瑟夫环问题的实际场景,要通过输入n、m、k三个正整数,求出列的序列。这个问题采用的是典型的循环链表的数据结构,就是将一个链表的尾元素指针指向队首元素:
p->link=head;
解决问题的核心步骤如下:
(1)建立一个具有n个链节点、无头节点的循环链表。
(2)确定第一个报数人的位置。
(3)不断的从链表中删除链节点,直到链表为空。
答案:
2、用两个栈实现一个队列的功能,请用C++实现。
解析:思路如下:
假设两个栈A和B,且都为空。
可以认为栈A提供入队列的功能,栈B提供出队列的功能。
入队列:入栈A。
出队列:
(1)如果栈B不为空,直接弹出栈B的数据。
(2)如果栈B为空,则依次弹出栈A的数据,放入栈B中,再弹出栈B的数据。
答案:
3、今天在csdn上看到一道面试题
给定方法签名:
MoveSubArrayToTheEnd(int[] array, int numberOfElements)
传入一个数组如 {1,2,3,4,5,6,7}
将数组前面 head的一个子集移到数组末尾end
如:input numberOfElements=3,则{1,2,3,4,5,6,7}=>{4,5,6,7,1,2,3}
input numberOfElements=5,则{1,2,3,4,5,6,7}=>{6,7,1,2,3,4,5}
请不要使用FCL提供的类库函数..
4、编程实现队列的入队/出队操作。
答案:
5、请讲诉heap和stack的差别。
解析:在进行C/C++编程时,需要程序员对内存的了解比较精准。经常需要操作的内存可分为以下几个类别:
(1)堆区(heap):一般由程序员分配和释放,若程序员不释放,程序结束时可能由操作系统回收。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表
(2)文字常量区:常量字符串就是放在这里的,程序结束后由系统释放。
(3)全局区(静态区)(static):全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域,未初始化的全局变量和静态变量在相邻的另一块区域。程序结束后由系统释放。
(4)栈区(stack):由编译器自动分配和释放,存放函数的参数值、局部变量的值等。其操作方式类似于数据结构中的栈。
(5)程序代码区:存放函数体的二进制代码。
答案:
(1)stack的空间由操作系统自动分配/释放,heap上的空间手动分配/释放。
(2)C中的malloc函数分配内存空间即在堆上,C++中对应的是new操作符。
(3)程序在编译期对变量和函数分配内存都在栈上进行,且程序运行过程中函数调用时参数的传递也在栈上进行。
(4)stack空间有限,heap是很大的自由存储区。
免责声明:内容和图片源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容
填写下面表单即可预约申请免费试听!怕钱不够?可就业挣钱后再付学费! 怕学不会?助教全程陪读,随时解惑!担心就业?一地学习,可全国推荐就业!
Copyright © 京ICP备08000853号-56 京公网安备 11010802029508号 达内时代科技集团有限公司 版权所有
Tedu.cn All Rights Reserved