逻辑题:
1.有大中小三个水桶,分别能盛水8、5、3升水,8升的桶装满了水,其他的桶空着,怎样能倒出四升水?
解:如下:8/8,0/5,0/3->3/8,5/5,0/3->0/8,5/5,3/3->3/8,5/5,0/3->3/8,2/5,3/3->6/8,2/5,0/3
->6/8,0/5,2/3->1/8,5/5,2/3->1/8,4/5,3/3
2.在一个密闭的房间内只有一盏灯,房间外面看不到里面,外面有三个开关,只有一个开关能让灯亮起来,可以任意操控开关,但只能有一次进房间的机会,进去后要立即说出正确的开关,怎么做到?
解:假设3个开关分别是ABC,先把A打开5分钟,再把A关掉.接着打开B后立即进入房间
如果灯亮着,则B是该灯的开关.如果没亮,则摸一下灯泡,如果是热的,则A是该灯的开关,否则是C
选择填空:
3.一棵完全二叉树的结点总数为18,其叶子结点数为_.
答:9
解析:由完全二叉树的定义可知,2^4-1<18<2^5-1,故可知该完全二叉树的深度为5,且18-(2^4-1) = 3,
1*2<3<2*2故叶子结点数为3+(2^3-2) = 9
若某线性表中最常用的操作是在最后一个元素之后插入一个元素和删除第一个元素,则采用( )存储方式最节省运算时间。
A. 单链表
B. 仅有头指针的单循环链表
C. 双链表
D. 仅有尾指针的单循环链表
D.仅有尾指针的单循环链表
[分析]根据题意要求,该线性表的存储应能够很方便地找到线性表的第一个元素和最后一个元素,A和B都能很方便地通过头指针找到线性表的第一个元素,却要经过所有元素才能找到最后一个元素;选项C双链表若存为双向循环链表,则能很方便地找到线性表的第一个元素和最后一个元素,但存储效率要低些,插入和删除操作也略微复杂;选项D可通过尾指针直接找到线性表