天天算法03——二元查找树转变成排序的双向链表
摘要:题目: 输入一棵二元查找树,将该二元查找树转换成一个排序的双向链表。要求不能创建任何新的结点,只调整指针的指向。 10 / \ 6 14 / \ / \ 4 8 12 16转换成双向链表4=6=8=10=12=14=16。解答:二元查找树: 它首先要是一棵二元树,在这基础上它或者是一棵空树;或者是具有下列性质的二元树: (1)若...
阅读全文
posted @
2011-10-29 20:07
comeby
阅读(253)
推荐(0)
天天算法02——删除字符串中所给定的字符串
摘要:题目:(华为2010上机题)在给定字符串中查找所有特定子串并删除,如果没有找到相应子串,则不作任何操作。要求实现函数:int delete_sub_str(const char *str, const char *sub_str, char *result_str)【输入】 str:输入的被操作字符串 sub_str:需要查找并删除的特定子字符串【输出】 result_str:在str字符串中删除所有sub_str子字符串后的结果【返回】 删除的子字符串的个数解答:#include <stdio.h>#include <string.h>#include <std
阅读全文
posted @
2011-10-27 12:58
comeby
阅读(947)
推荐(0)
天天算法01——左旋转字符串
摘要:题目:(微软面试100题中的第26题)定义字符串的左旋转操作:把字符串前面的若干个字符移动到字符串的尾部。如把字符串abcd1234左旋转4位得到字符串1234abcd。请实现字符串左旋转的函数,要求对长度为n的字符串操作的时间复杂度为O(n),空间复杂度为O(1)。 解答:逆序排列abcd:abcd1234 → dcba1234;逆序排列1234:dcba1234 → dcba4321;全部逆序:dcba4321 → 1234abcd。#include <stdio.h>#include <string.h>void revise(char *str, int len
阅读全文
posted @
2011-10-26 22:31
comeby
阅读(295)
推荐(0)