C++面试3(编程)
2015-12-13 15:28
351 查看
1.如何判断一个单链表是有环的?(注意不能用标志位,最多只能用两个额外的指针)
答:判断一个单链表是否有环最简单的做法是定义两个指针,一个指针每次递增一步,另一个指针每次递增两步,如果是有环的,那么两者必然会重合,反之亦然。
代码如下:
答:可以用递归的方式。f(n) = f(n-1) + f(n-2);
代码如下:
答:代码为:
答:判断一个单链表是否有环最简单的做法是定义两个指针,一个指针每次递增一步,另一个指针每次递增两步,如果是有环的,那么两者必然会重合,反之亦然。
代码如下:
bool check(const node* head) { if (head == NULL) { return false; } node* low=head; node* fast=head; while ((low->next != NULL) && (fast->next->next != NULL)) { low = low->next; fast = fast->next->next; if (low == fast) { return true; } } return false; }2.斐波那契数列,1、1、2、3、5、8......编写程序求第十项,可用递归?
答:可以用递归的方式。f(n) = f(n-1) + f(n-2);
代码如下:
int Phe(int n) { if (n == 1 || n == 2) { return 1; } return (Phe(n-1)+Phe(n-2)); }3.写一个函数,将一个字符串的\t都转换成4个空格?
答:代码为:
void ReplaceTab(char* strDst,const char* strSrc) { assert(strSrc != NULL); while (*strSrc != '\0') { if (*strSrc == '\t') { *strDst++ = ' '; *strDst++ = ' '; *strDst++ = ' '; *strDst++ = ' '; } else *strDst++ = *strSrc; strSrc++; } }
相关文章推荐
- c++构造函数和赋值操作符
- 2015年蓝桥杯C/C++ B组题目题解
- C++学习笔记(3)
- C语言基础知识总结
- C语言总结
- C++ 实现 Data类(简单的日期计算器)
- 自己总结的一些C语言库函数
- c++ 模板类 单链表
- C/C++ 之 gdb 调试
- c++ 模板类实现 动态顺序表 基础操作
- C/C++ 之 库
- C/C++ 之 restrict关键字
- c语言总结
- 一起talk C栗子吧(第七十五回:C语言实例--DIY ls命令)
- c++ 构造函数初始化列表
- C++ Windows读写INI文件
- C语言 makefile文件与头文件的写法。
- c++编译 extra qualification '类名' on member '变量名' error
- 博弈总结
- [c++ 温故知新]类内char* 指针内存分配长度