【嵌入式笔试题】C语言笔试题(5)

非常经典的笔试题。

5.数据结构与算法(17道)

5.1数组与链表的区别?

1 )数组的元素个数在定义时就必须确定,且元素的类型必须一致;而链表的元素
个数自由,且元素内可以有不同类型的数据。
2 )数组的元素在内存中是按顺序存储的,而链表的元素是随机存储的。
3 )要访问数组的元素可以按下标索引来访问,速度比较快;如果对它进行插入 /
除操作的话,就得移动很多元素,所以对数组进行插入 / 删除操作效率很低。由于链表
是随机存储的,如果要访问链表中的某个元素的话,那就得从链表的头逐个遍历,直
到找到所需要的元素为止,所以链表的随机访问的效率就比数组要低;链表在插入 /
除操作上有很高的效率(相对数组)。一句话总结就是:数组的访问效率高,而链表
的插入 / 删除效率高。

5.2 a = b * 2; a = b / 4; a = b % 8; a = b / 8 * 8 + b % 4 ; a = b * 15; 效率最高的算法?

答案:
解读: * / % 分别可以用 << >> & 来实现,效率更高。

5.3 C语言程序代码优化方法

1 )选择合适的数据结构与算法;
2 )使用尽量小的数据类型;
3 )使用自加、自减指令;
4 )用移位实现乘除法运算;
5 )求余运算用 & (如 a=a%8 改为 a=a&7 );
6 )平方运算用 * (如 a=pow(a,2.0) 改为 a=a*a );
7 )延时函数的自加改为自减;
8 switch 语句中根据发生频率来进行 case 排序;
9 )减少运算的强度。

5.4时间换空间、空间换时间的例子?

1 )时间换空间:冒泡排序。
2 )空间换时间:快速排序。

5.5什么是满二叉树、完全二叉树、平衡二叉树?

1 )当一个树每一层的结点个数都达到最大时,这个树是满二叉树。
2 )当一个树除了最后一层外其他每一层的结点数都达到最大,且最后一层的叶子
结点都靠左排列时,这个树是完全二叉树。满二叉树是一种特殊的完全二叉树。
3 )当且仅当一个树两个子树的高度差不超过 1 时,这个树是平衡二叉树。

5.6堆和栈的的区别?

 

5.8对线性表(7,34,55,25,64,46,20,10)进行散列存储时,若选用HK=K %9作为散列函数,则散列地址为1的元素有几个?

答案: 4 个,分别是: 55 64 46 10
解读: 将线性表元素代入散列函数,即可得到散列地址。

5.9写一个程序, 要功能:求出用125

  • 14
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值