21
2020
03

以下为Windows NT下的32位C++程序,请计算sizeof的值

void Func ( char str[100] ) {  sizeof( str ) = ? } void *p = malloc( 100 ); sizeof ( p ) = ?sizeof( str ) = 4   sizeof ( p ) = 4  
21
2020
03

分别给出BOOL,int,float,指针变量 与“零值”比较的 if 语句

BOOL型变量:if(!var)   int型变量: if(var==0)   float型变量:   const float EPSINON = 0.00001;   if ((x >= - EPSINON) && (x <= EPSINON)   指针变量:if(var==NULL)   
21
2020
03

指出代码错误

void Test( void ) {  char *str = (char *) malloc( 100 );  strcpy( str, "hello" );  free( str );   ... //省略的其它语句 }错误有二:使用malloc分配内
21
2020
03

写出完整版的strcpy函数

char * strcpy( char *strDest, const char *strSrc )  {  assert( (strDest != NULL) && (strSrc != NULL) );  char *address = strDest;
21
2020
03

怎么判断两个链表是否有交点?

答:假设一个链表长为n,另一个链表长为m,让长的链表的指针先走|n-m|个长度,再让两个链表的指针一起走,最后两个指针相遇的地方就是交点了(画图!画图!)
21
2020
03

单向链表怎么取到倒数第k个元素?

答:设置两个指针p1p2,让p2 先走k步,然后再让p1p2同时走,最后若p2 指向的节点的下一个节点是NULL ,那么输出p1即可。(画个图就明白了)
21
2020
03

再扩展: 这个链表的长度是多少?

答:上一个问题我们自然可以得到起点到成环点的距离,那么再回到第一个问题的情况,p1p2相遇了,那么再让他们继续走下去,再次相遇所经过的操作数就是这个环的长度了,这两者相加就得到了整个链表的长度。
21
2020
03

扩展:并指出成环的点在哪里?

答:这个lz 也是在网上看了人家的博客才知道的,当p1p2 指向同一个节点的时候,让p1 指向第一个节点,p2 不动,然后让两个节点以同样的速度指向下一个节点,最后p1p2相遇的地方就是成环的点。
21
2020
03

单向链表如何判断是否成环?

答:两个指针p1,p2 , 其中p1 每次指向下一个节点,p2每次指向下两个节点(p2=p2->next->next),这样若链表有环,那么p1p2必定在某一点指向同一个节点。
21
2020
03

100大小的数组放了1-99 100个数,只有一个数重复了,找出重复的那个数。

答:解法很简单,把这100个数加起来,然后逐一剪掉1-99 剩下的那个数就是重复的数。