网上收集的c/c++的笔试题,将部分整理成节,上传后大家方便。不是很全,但是可以作为笔试的参考吧。
//结点指针成员 }PATH,*pPath;
初始化树的结点栈: void init_path( pPath* L ) { *L = ( pPath )malloc( sizeof( PATH ) ); //创建空树 ( *L )->next = NULL; } 树结点入栈函数: void push_path(pPath H, pBTree T) { pPath p = H->next; pPath q = H; while( NULL != p ) 20
{ q = p; p = p->next; } p = ( pPath )malloc( sizeof( PATH ) ); //申请新结点 p->next = NULL; //初始化新结点 p->tree = T; q->next = p; //新结点入栈 }
树结点打印函数: void print_path( pPath L ) { pPath p = L->next; while( NULL != p ) //打印当前栈中所有数据 { printf(“%d, “, p->tree->data); p = p->next; } } 树结点出栈函数: void pop_path( pPath H ) { pPath p = H->next; pPath q = H; if( NULL == p ) //检验当前栈是否为空 { printf(“Stack is null!\n”); return; } p = p->next; while( NULL != p ) //出栈 { q = q->next; p = p->next; } free( q->next ); //释放出栈结点空间 q->next = NULL; }
判断结点是否为叶子结点: int IsLeaf(pBTree T) { return ( T->lchild == NULL )&&( T->rchild==NULL ); }
查找符合条件的路径: int find_path(pBTree T, int sum, pPath L) 21
{ push_path( L, T); record += T->data; if( ( record == sum ) && ( IsLeaf( T ) ) ) //打印符合条件的当前路径 { print_path( L ); printf( “\n” ); } if( T->lchild != NULL ) //递归查找当前节点的左孩子 { find_path( T->lchild, sum, L); } if( T->rchild != NULL ) //递归查找当前节点的右孩子 { find_path( T->rchild, sum, L); } record -= T->data; pop_path(L); return 0; } 注意:数据结构一定要活学活用,例如本题,把所有的结点都压入栈,而不符合条件的结点弹出栈,很容易实现了有效路径的查找。虽然用链表也可以实现,但是用栈更利于理解这个问题,即适当的数据结构为更好的算法设计提供了有利的条件。
面试题34:写一个“标准”宏MIN
写一个“标准”宏MIN,这个宏输入两个参数并且返回较小的一个。 【答案】 #define min(a,b)((a)<=(b)?(a):(b)) 注意:在调用时一定要注意这个宏定义的副作用,如下调用: ((++*p)<=(x)?(++*p):(x)。
p指针就自加了两次,违背了MIN的本意。 面试题35:typedef和define有什么区别 (1)用法不同:typedef用来定义一种数据类型的别名,增强程序的可读性。define主要用来定义常量,以及书写复杂使用频繁的宏。 (2)执行时间不同:typedef是编译过程的一部分,有类型检查的功能。define是宏定义,是预编译的部分,其发生在编译之前,只是简单的进行字符串的替换,不进行类型的检查。
(3)作用域不同:typedef有作用域限定。define不受作用域约束,只要是在define声明后的引用都是正确的。 (4)对指针的操作不同:typedef和define定义的指针时有很大的区别。
注意:typedef定义是语句,因为句尾要加上分号。而define不是语句,千万不能在句尾加分号。 22
面试题36:关键字const是什么
const用来定义一个只读的变量或对象。主要优点:便于类型检查、同宏定义一样可以方便地进行参数的修改和调整、节省空间,避免不必要的内存分配、可为函数重载提供参考。
说明:const修饰函数参数,是一种编程规范的要求,便于阅读,一看即知这个参数不能被改变,实现时不易出错。 面试题37:static有什么作用