摘要: 有时候我们需要测试一个单向链表是否存在环。最土鳖的方法就是改变链表的数据结构,给每个节点添加一个bool变量,在未测试时全部初始化为false,然后遍历链表,每访问一个节点,先测试其bool成员来确定这个节点是否被访问过,如果为true,则表示访问过,则有环,否则设置bool成员为true,表明访问过,然后继续测试。 如果不改变数据结构的话,我们有以下的解决方案: 1. 测试是否有环: 我们可以构建两个迭代器来遍历链表,一个每一次移动一个节点,另外一个每次移动两个节点。如果这两个一快一慢的土鳖迭代器相遇了,也就是说他们在某个时刻都到了同一个节点,那么我们可以肯定有环存在。直观的理解就是让两个. 阅读全文
posted @ 2010-12-19 17:18 李土鳖 阅读(333) 评论(0) 推荐(1) 编辑
摘要: 这两天随便翻了一下.Net程序员面试宝典,发现一个很有意思的题目:编写一个程序将此程序的源代码原封不动的打印出来,也就是说程序运行后在命令行上面打印的内容和源代码完全相同。如果不仔细思考,可能我们会立即开始编码,然后想用Console.WriteLine来搞定这个问题,但有两个棘手的问题得解决。 1. 如果我们直接在Main方法里用Console.WriteLine来打印,大概的样子是:Console.WriteLine("/*Console.WriteLine前面的代码*/Console.WriteLine("/*代码内容*/");/*Console.WriteLine后面的代码*/")。这 阅读全文
posted @ 2010-12-19 14:15 李土鳖 阅读(1602) 评论(2) 推荐(0) 编辑
摘要: 这里用C++实现了一个一般树,也就是那种通用型的树,例如文件系统所用的树。除了一些树的基本操作外,还支持了节点和数据项的迭代器。 实现:[代码] 测试代码: 代码 阅读全文
posted @ 2010-12-14 21:42 李土鳖 阅读(419) 评论(1) 推荐(0) 编辑
摘要: 有时候我们在使用堆栈时需要增加一些额外功能,例如返回栈中的最小值。本例实现了这样的操作,而且Push,Pop和返回最小值都能在常量时间内完成。 下满是C++实现:[代码] 下面是测试代码:代码 阅读全文
posted @ 2010-12-12 16:12 李土鳖 阅读(431) 评论(1) 推荐(1) 编辑