写一个“标准”宏MIN,这个宏输入两个参数并返回较小的一个

转载 2013年05月15日 21:41:06

【问题】

写一个“标准”宏MIN,这个宏输入两个参数并返回较小的一个













【答案】

#define MIN(A,B) ((A) < (B) ?(A) : (B))


【解析】

这个测试是为下面的目的而设的:
  1). 标识#define在宏中应用的基本知识。这是很重要的,因为直到嵌入(inline)操作符变为标准C的一部分,

              宏是方便产生嵌入代码的唯一方法,对于嵌入式系统来说,为了能达到要求的性能,嵌入代码经常是必须的方法。
  2). 三重条件操作符的知识。这个操作符存在C语言中的原因是它使得编译器能产生比if-then-else更优化的代码,了解这个用法是很重要的。
  3). 懂得在宏中小心地把参数用括号括起来
  4). 我也用这个问题开始讨论宏的副作用,例如:当你写下面的代码时会发生什么事?
        least = MIN(*p++, b);


相关文章推荐

C#--如何在一个函数中返回两个值(包含数组的参数)

/*烟台大学计算机学院学生 *All right reserved. *文件名称:C#--如何在一个函数中返回两个值(包含数组的参数) *作者:杨飞 *完成日期:2014...

栈和队列面试题(二)--- 实现一个栈,要求实现Push(出栈)、Pop(入栈)、Min(返回最小值的操作) 的时间复杂度为O(1)

一、 实现一个栈,要求实现Push(出栈)、Pop(入栈)、Min(返回最小值的操作) 的时间复杂度为O(1) (1)栈的基本操作入栈(push);出栈(pop);查找栈顶(top);栈的元素个数(...

实现一个栈,要求Push(入栈),Pop(出栈),Min(返回最小值的操作)的时间复杂度为O(1)

实现一个栈,要求Push(入栈),Pop(出栈),Min(返回最小值的操作)的时间复杂度为O(1)...

【栈队列】实现一个栈Stack,要求实现Push(出栈)、Pop(入栈)、Min(返回最小值的操作)的时间复杂度为O(1)

问题分析要记录从当前栈顶到栈底元素的最小值,很容易想到用一个变量,每push一个元素更新一次变量的值。那么问题来了,当执行pop操作时,上一次的最小值就找不到了。解决方法方法1、 使用一个栈。元素x...

算法7:设计一个class,类似于stack, 但可以是O(1)时间内返回min()

解题思路类中存一个数据栈和一个辅助栈,向数据栈push的时候,判断当前值与辅助栈栈顶的值的大小,如果小则push到辅助栈,否则push辅助栈的栈顶数值到辅助栈;向数据栈pop时,同时pop辅助栈的值。...
  • pplin
  • pplin
  • 2017年03月07日 14:08
  • 77

实现一个栈Stack,要求实现Push(出栈)、Pop(入栈)、Min(返回最小值的操作)的时间复杂度为O(1)

思路: push: 利用两个栈,第一个栈顺序存放元素,第二个栈当为空时,先存入一个元素,再次存入时,如果要存放的元素比第二个栈顶的元素大,则不存入,小于或等于的时候存入,就能保证第二栈顶都是第一个栈中...

实现一个栈,要求实现Push(入栈)、Pop(出栈)、Min(返回最小值的操作)的时间复杂度为O(1)

实现一个栈,要求实现Push(入栈)、Pop(出栈)、Min(返回最小值的操作)的时间复杂度为O(1)650) this.width=650;" src="http://s3.51cto.com/wy...
  • Scenlyf
  • Scenlyf
  • 2016年06月11日 18:53
  • 304

算法2_实现一个栈,除了push和pop操作,还要实现min函数以返回栈中的最小值,时间复杂度都为O(1)(keep it up)

实现一个栈,除了push和pop操作,还要实现min函数以返回栈中的最小值。  push,pop和min函数的时间复杂度都为O(1)。 看到这个题目最直接的反应是用一个变量来保存当前栈的最...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:写一个“标准”宏MIN,这个宏输入两个参数并返回较小的一个
举报原因:
原因补充:

(最多只允许输入30个字)