没有合适的资源?快使用搜索试试~ 我知道了~
c++笔试题汇总 ①链表反转 单向链表的反转是一个经常被问到的一个面试题,也是一个非常基础的问题。比如一个链表是这样的: 1-...
5星 · 超过95%的资源 需积分: 18 60 下载量 161 浏览量
2011-03-19
16:29:59
上传
评论 2
收藏 708KB DOC 举报
温馨提示
试读
64页
c++笔试题汇总 ①链表反转 单向链表的反转是一个经常被问到的一个面试题,也是一个非常基础的问题。比如一个链表是这样的: 1->2->3->4->5 通过反转后成为5->4->3->2->1。 最容易想到的方法遍历一遍链表,利用一个辅助指针,存储遍历过程中当前指针指向的下一个元素,然后将当前节点元素的指针反转后,利用已经存储的指针往后面继续遍历。源代码如下:
资源推荐
资源详情
资源评论
笔试题汇总
链表反转
单向链表的反转是一个经常被问到的一个面试题,也是一个非常基础的问题。比如一个链表是
这样的: 通过反转后成为 。
最容易想到的方法遍历一遍链表,利用一个辅助指针,存储遍历过程中当前指针指向的下一个
元素,然后将当前节点元素的指针反转后,利用已经存储的指针往后面继续遍历。源代码如下:
! "##$%&&
' ((((((((((((((((((
) *++
, *#
- #
.
((#
((#*
((*#
! ((#
'
) #$%&&
, #*
-
还有一种利用递归的方法。这种方法的基本思想是在反转当前节点之前先调用递归函数反转后
续节点。源代码如下。不过这个方法有一个缺点,就是在反转后的最后一个结点会形成一个环,
所以必须将函数的返回的节点的 域置为 $%&&。因为要改变 指针,所以我用了引用。
算法的源代码如下:
*+
"*##$%&&//*##$%&&
1
((#*
! ((*
'
)
,
- ((0*#*+
((0*#*
((*
已知 类定义如下:
12
*34
12#$%&& 55通用构造函数
1212 55拷贝构造函数
612 55析构函数
12*#12 55赋值函数
*4
0755用于保存字符串
尝试写出类的成员函数实现。
答案:
124412
"##$%&& 55 在参数为 $%&& 时会抛异常才会有这步判断
07#.89
078-9#:;-:
07#.8 <9
*=07+
2
12441212
07#.807 <9
*=07+07
121244*#12
"##
890755删除原来的数据,新开一块内存
07#.807 <9
*=07+07
1244612
8907
> 网上流传的 笔试题汇总
求下面函数的返回值(微软)
"
#-
.
<<
#
假定 #,,,,。 答案:)
思路:将 转化为 进制,看含有的 的个数。
3
什么是“引用”?申明和使用“引用”要注意哪些问题?
答:引用就是某个目标变量的“别名” ,对应用的操作与对变量直接操作效果完全相同。
申明一个引用的时候,切记要对其进行初始化。引用声明完毕后,相当于目标变量名有两个名
称,即该目标原名称和引用名,不能再把该引用名作为其他变量名的别名。声明一个引用,不
是新定义了一个变量,它只表示该引用名是目标变量名的一个别名,它本身不是一种数据类型,
因此引用本身不占存储单元,系统也不给引用分配存储单元。不能建立数组的引用。
将“引用”作为函数参数有哪些特点?
()传递引用给函数与传递指针的效果是一样的。这时,被调函数的形参就成为原来主调函
数中的实参变量或对象的一个别名来使用,所以在被调函数中对形参变量的操作就是对其相应
的目标对象(在主调函数中)的操作。
()使用引用传递函数的参数,在内存中并没有产生实参的副本,它是直接对实参操作;而
使用一般变量传递函数的参数,当发生函数调用时,需要给形参分配存储单元,形参变量是实
参变量的副本;如果传递的是对象,还将调用拷贝构造函数。因此,当参数传递的数据较大时,
用引用比用一般变量传递参数的效率和所占空间都好。
()使用指针作为函数的参数虽然也能达到与使用引用的效果,但是,在被调函数中同样要
给形参分配存储单元,且需要重复使用?指针变量名?的形式进行运算,这很容易产生错误且程
序的阅读性较差;另一方面,在主调函数的调用点处,必须用变量的地址作为实参。而引用更
容易使用,更清晰。
在什么时候需要使用“常引用”?
如果既要利用引用提高程序的效率,又要保护传递给函数的数据不在函数中被改变,就应使用
常引用。常引用声明方式:类型标识符 引用名#目标变量名;
例
#
#55错误
#55正确
例
4
2"
32
那么下面的表达式将是非法的:
3"
3?.?
原因在于 " 和?.?串都会产生一个临时对象,而在 @<<中,这些临时对象都是
类型的。因此上面的表达式就是试图将一个 类型的对象转换为非 类型,这
是非法的。
引用型参数应该在能被定义为 的情况下,尽量定义为 。
将“引用”作为函数返回值类型的格式、好处和需要遵守的规则
格式:类型标识符 函数名(形参列表及类型说明)55函数体
好处:在内存中不产生被返回值的副本;(注意:正是因为这点原因,所以返回一个局部变量
的引用是不可取的。因为随着该局部变量生存期的结束,相应的引用也会失效,产生 0
A
注意事项:
()不能返回局部变量的引用。这条可以参照 BC@<<89的 D0。主要原因是局
部变量会在函数返回后被销毁,因此被返回的引用就成为了?无所指?的引用,程序会进入未知
状态。
()不能返回函数内部 . 分配的内存的引用。这条可以参照 BC@<<89的 D0
。虽然不存在局部变量的被动销毁问题,可对于这种情况(返回函数内部 . 分配内存的
引用),又面临其它尴尬局面。例如,被函数返回的引用只是作为一个临时变量出现,而没有
被赋予一个实际的变量,那么这个引用所指向的空间(由 . 分配)就无法释放,造成
00=。
()可以返回类成员的引用,但最好是 。这条原则可以参照 BC@<<89的
D0-。主要原因是当对象的属性是与某种业务规则(3)相关联的时候,其赋
值常常与某些其它属性或者对象的状态有关,因此有必要将赋值操作封装在一个业务规则当中。
如果其它对象可以获得该属性的非常量引用(或指针),那么对该属性的单纯赋值就会破坏业
务规则的完整性。
()流操作符重载返回值申明为“引用”的作用:
5
剩余63页未读,继续阅读
leikkboy
- 粉丝: 2
- 资源: 9
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
前往页