1.升序排列下列数值:(101001)2,(40)10,(23)8,(18)16
解:个人理解,全统一到某一进制,如10进制数,再进行比较。
2.写出下列函数的返回值
解:x = x&(x-1)的作用是将x(二进制表示)最右边的1消去,所以,程序的功能是求x的二进制表示法有多少个1.因为300(10)=100101100(2),所以返回值是4.
3.写出下面代码的输出
解:这道题出得十分YD,注意是d%而不是%d,所以,你懂的。答案是,一不小心,可能会跌爆眼镜!
d
c
c
c
4.使用C语言写出存储内容为整数的单链表数据类型定义,并使用自己定义的单链表数据类型定义,完成下面的算法,要求优化时间与空间复杂度。
算法要求:合并两个已经排序的单链表为一个排序的单链表,相同内容只保留一个
如:单链表a:1->2->3->4
单链表b:3->4->5
输出:1->2->3->4->5
解:合并两个链表的方法其它同类型的面试题已经有讲过不少了,这里多了一个“去重”要求。只需要多处理一种情况即可。下面用的是C++,稍作改进就可以变成C.
5.编写程序,把一个有序整数数组放到以整数为元素的二叉树中,生成一个平衡排序二叉树。设计并变成实现一种遍历方法,,是这种遍历方法的输出正好是输入数据的次序。
如数组 a:{1,2,3,4,5,6,7}
生成的二叉树:
4
/
2 6
/ /
1 3 5 7
解:本来将一个有序数组放到一棵二叉树有很多种摆放方式,但是题目要求是平衡二叉树,容易想到的是二分思想,当每个结点左边和右边的结点数相等(或只相差1个的时候)这棵树就是平衡的,最后再中序输出即可。
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!