
3、数据结构和算法
mr_chenping
这个作者很懒,什么都没留下…
展开
-
数据结构——算法之(043)(c++各种排序算法实现)
【申明:本文仅限于自我归纳总结和相互交流,有纰漏还望各位指出。 联系邮箱:Mr_chenping@163.com】题目:c++ 各种排序算法实现题目分析:具体排序原理参考相关算法书籍算法实现:#include static void swap(int *a, int *b){ int tmp; tmp = *a; *a = *b;原创 2015-06-10 13:04:52 · 1513 阅读 · 0 评论 -
数据结构——算法之(036)(输出字符串的所有排列)
【申明:本文仅限于自我归纳总结和相互交流,有纰漏还望各位指出。 联系邮箱:Mr_chenping@163.com】题目:输出字符串的所有排列,如 abc 的全排列: abc, acb, bca, dac, cab, cba题目分析:1、想遍历字符串,然后顺序交换字符串的两个字符,然后再次递归后,把刚才那两个字符交换回来算法实现:#include using原创 2014-06-30 17:13:16 · 1005 阅读 · 0 评论 -
数据结构——算法之(038)(找出两个数之间的素数的个数,并打印)
【申明:本文仅限于自我归纳总结和相互交流,有纰漏还望各位指出。 联系邮箱:Mr_chenping@163.com】题目:找出两个数之间的素数的个数,并打印题目分析:1、素数是只能被1和本身整除的数算法实现:#include /*** 找出两个数之间的素数的个数,并打印** 注意:只能被1和本身整除的数*/int count_prime_numbe原创 2014-06-30 17:18:53 · 1429 阅读 · 0 评论 -
数据结构——算法之(037)(数值的整数次方)
【申明:本文仅限于自我归纳总结和相互交流,有纰漏还望各位指出。 联系邮箱:Mr_chenping@163.com】题目:数值的整数次方.实现函数double Power(double base, int exponent),求base 的exponent次方,不需要考虑溢出题目分析:1、要考虑double型变量的比较2、正负数的不同点算法实现:#in原创 2014-06-30 17:15:19 · 886 阅读 · 0 评论 -
数据结构——算法之(022)( 在字符串中删除特定的字符)
【申明:本文仅限于自我归纳总结和相互交流,有纰漏还望各位指出。 联系邮箱:Mr_chenping@163.com】题目:输入两个字符串,从第一字符串中删除第二个字符串中所有的字符。例如,输入”They are students.”和”aeiou”, 则删除之后的第一个字符串变成”Thy r stdnts.”。这是一道微软面试题。在微软的常见面试题中,与字符串相关的题目占了很大的原创 2014-05-27 12:06:24 · 2131 阅读 · 0 评论 -
数据结构——算法之(019)( 10分钟写出二分法查找,并调试通过)
【申明:本文仅限于自我归纳总结和相互交流,有纰漏还望各位指出。 联系邮箱:Mr_chenping@163.com】题目:写出二分法查找,要求在10分钟之内完成,并调试通过题目分析:一、相信好多人看着简单,动手就难了。二、二分法查找只能用于排序过的序列查找,简单的思想是折半查找法,每次查找前先修改下标。算法实现:#include int原创 2014-05-27 11:38:57 · 1422 阅读 · 0 评论 -
数据结构——算法之(021)( 从尾到头输出链表)
【申明:本文仅限于自我归纳总结和相互交流,有纰漏还望各位指出。 联系邮箱:Mr_chenping@163.com】题目:输入一个链表的头结点,从尾到头反过来输出每个结点的值。链表结点定义如下:struct ListNode{int m_nKey;ListNode* m_pNext;};题目分析:给出三种解题方法:(注意,单向链原创 2014-05-27 11:56:39 · 1090 阅读 · 0 评论 -
数据结构——算法之(020)( 和为n连续正数序列)
【申明:本文仅限于自我归纳总结和相互交流,有纰漏还望各位指出。 联系邮箱:Mr_chenping@163.com】题目:数组中有一个数字出现的次数超过了数组长度的一半,找出这个数字。分析:这是一道广为流传的面试题,包括百度、微软和Google 在内的多家公司都曾经采用过这个题目。要几十分钟的时间里很好地解答这道题,除了较好的编程能力之外,还需要较快的反应和较强的逻辑思维能力原创 2014-05-27 11:48:25 · 857 阅读 · 0 评论 -
数据结构——算法之(034)(编写一个函数求一个数组中的第二大数)
【申明:本文仅限于自我归纳总结和相互交流,有纰漏还望各位指出。 联系邮箱:Mr_chenping@163.com】题目:编写一个函数求一个数组中的第二大数题目分析:1、要想找到第二大数,很自然想到,你必须找到第一大数2、顺序遍历数组,用两个零时变量记录当前的最大值和第二大值算法实现:#include int search_second_max(i原创 2014-06-30 17:02:41 · 1835 阅读 · 0 评论 -
数据结构——算法之(035)(时钟的时分秒针每天重叠几次?时分每天相遇几次?分秒每小时遇到几次?)
【申明:本文仅限于自我归纳总结和相互交流,有纰漏还望各位指出。 联系邮箱:Mr_chenping@163.com】题目:两个有序单链表合并为一个有序的单链表(默认升序)题目分析:1、因为两个链表都是有序的,所以首先要记录那个链表头最小2、大致思想是用一个虚拟节点顺序连接两个链表中的节点,并且顺移两个链表中头指针,让其一直 指向第一个未被连接的节点算法实现原创 2014-06-30 17:07:52 · 1178 阅读 · 0 评论 -
数据结构——算法之(014)( 输入n,用最快的方法求Fibonacci数列的第n项)
【申明:本文仅限于自我归纳总结和相互交流,有纰漏还望各位指出。 联系邮箱:Mr_chenping@163.com】题目:题目:定义Fibonacci数列如下: / 0 n=0f(n)= 1 n=1 / f(n-1)+f(n-2) n=2输入n,用最快的方法求该数列的第n项。分析:在很多C语言教科书中讲到递归函数的时候,都会用Fibonacci作为例子。原创 2014-05-24 11:24:09 · 1261 阅读 · 0 评论 -
数据结构——算法之(030)(将字符串中所有小写字母排在大写字母的前面)
【申明:本文仅限于自我归纳总结和相互交流,有纰漏还望各位指出。 联系邮箱:Mr_chenping@163.com】题目:有一个由大小写组成的字符串,现在需要对他进行修改,将其中的所有小写字母排在大写字母的前面开辟足够少的空间,时间复杂度O(n)题目分析:1、字符串从新排序后没有要求保持以前的顺序2、用两个指针分别指向字符串头和尾,头指针指向每次指向大写字原创 2014-06-17 09:29:22 · 3329 阅读 · 1 评论 -
数据结构——算法之(032)(求两个串中的第一个最长子串)
【申明:本文仅限于自我归纳总结和相互交流,有纰漏还望各位指出。 联系邮箱:Mr_chenping@163.com】题目:求两个串中的第一个最长子串(神州数码以前试题).如"abractyeyt","dgdsaeactyey"的最大子串为"actyey".题目分析:1、这里只是实现了简单的字符串算法(最大支持字符串长度64),主要是展示算法思想2、思路是把2个字符原创 2014-06-17 09:44:21 · 1679 阅读 · 0 评论 -
数据结构——算法之(027)( 在O(1)时间内删除链表结点)
【申明:本文仅限于自我归纳总结和相互交流,有纰漏还望各位指出。 联系邮箱:Mr_chenping@163.com】题目:在O(1)时间内删除链表结点,且不知道链表头题目分析:1、把要删除节点的下一个节点的数据拷贝到要删除的节点2、把下一个节点删除算法实现:#include #include typedef struct _list_node{ int原创 2014-06-16 16:51:25 · 1047 阅读 · 0 评论 -
数据结构——算法之(042)(字符串移位包含的问题, s1是否可以由s2移位后得到)
【申明:本文仅限于自我归纳总结和相互交流,有纰漏还望各位指出。 联系邮箱:Mr_chenping@163.com】题目:字符串移位包含的问题, s1是否可以由s2移位后得到题目分析:1、顺序遍历字符串s12、每次左移一个字符与s2比较算法实现:#include #include int is_rotate_str(char *des原创 2015-06-10 13:00:39 · 783 阅读 · 0 评论 -
数据结构——算法之(041)(寻找数组中的最大值和最小值)
【申明:本文仅限于自我归纳总结和相互交流,有纰漏还望各位指出。 联系邮箱:Mr_chenping@163.com】题目:寻找数组中的最大值和最小值题目分析:1、时间复杂度0(1)算法实现:#include void get_array_max_and_min(int *array, int array_size, int *max, int *min原创 2015-06-10 12:54:51 · 2697 阅读 · 0 评论 -
数据结构——算法之(040)(最大公约数问题)
【申明:本文仅限于自我归纳总结和相互交流,有纰漏还望各位指出。 联系邮箱:Mr_chenping@163.com】题目:最大公约数问题题目分析:编程之美上的经典算法算法实现:#include int gcd(int x, int y){ return ((!y) ? x: gcd(y, x%y));}int main(int argc, c原创 2015-06-10 12:51:32 · 844 阅读 · 0 评论 -
数据结构——算法之(039)(ip合法性检查)
【申明:本文仅限于自我归纳总结和相互交流,有纰漏还望各位指出。 联系邮箱:Mr_chenping@163.com】题目:ip合法性检查题目分析:(1) 字符串只含有数字和'.'(2) 长度在7-15之间(0.0.0.0--255.255.255.255)(3) 每个数字在0-255之间(4) '.'号不能超过3个,且不能连续算法实现:#inc原创 2015-06-10 12:48:40 · 1007 阅读 · 0 评论 -
数据结构——算法之(006)(求子数组的最大和)
【申明:本文仅限于自我归纳总结和相互交流,有纰漏还望各位指出。 联系邮箱:Mr_chenping@163.com】题目:输入一个整形数组,数组里有正数也有负数。数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。求所有子数组的和的最大值。要求时间复杂度为O(n)。题目分析:一、如果数组中全部为负数,则返回最大负数值即可二、当既有正数也有负数的时候原创 2014-05-22 09:44:39 · 763 阅读 · 0 评论 -
数据结构——开篇
最近不是特别的忙,所以做了一个大胆的决定原创 2014-05-19 17:23:15 · 553 阅读 · 0 评论 -
数据结构——算法之(033)(两个有序单链表合并为一个有序的单链表)
【申明:本文仅限于自我归纳总结和相互交流,有纰漏还望各位指出。 联系邮箱:Mr_chenping@163.com】题目:两个有序单链表合并为一个有序的单链表(默认升序)题目分析:1、因为两个链表都是有序的,所以首先要记录那个链表头最小2、大致思想是用一个虚拟节点顺序连接两个链表中的节点,并且顺移两个链表中头指针,让其一直 指向第一个未被连接的节点算法实现原创 2014-06-17 09:53:21 · 3521 阅读 · 0 评论 -
数据结构——算法之(029)( 字符串原地压缩)
【申明:本文仅限于自我归纳总结和相互交流,有纰漏还望各位指出。 联系邮箱:Mr_chenping@163.com】题目:字符串原地压缩,题目描述:"eeeeeaaaff" 压缩为"e5a3f2",请编程实现题目分析:1、原地压缩,意思是不开辟额外的空间2、应该考虑单个字符不压缩,比如‘q’压缩过后还是‘q’,而不应该是‘q1’3、压缩后某个字符个数是多位原创 2014-06-17 09:21:30 · 2008 阅读 · 1 评论 -
数据结构——算法之(031)(将字符串中所有小写字母排在大写字母的前面)
【申明:本文仅限于自我归纳总结和相互交流,有纰漏还望各位指出。 联系邮箱:Mr_chenping@163.com】题目:函数将字符串中的字符'*'移到串的前部分,前面的非'*'字符后移,但不能改变非'*'字符的先后顺序,函数返回串中字符'*'的数量。题目分析:1、需要保持非'*'字符的顺序2、不开辟额外的空间3、用快慢指针,指向字符串尾巴,快指针指向非‘原创 2014-06-17 09:37:05 · 1512 阅读 · 0 评论 -
数据结构——算法之(028)( 寻找其中的一个子字符串个数)
【申明:本文仅限于自我归纳总结和相互交流,有纰漏还望各位指出。 联系邮箱:Mr_chenping@163.com】题目:已知一个字符串,比如asderwsde,寻找其中的一个子字符串比如sde 的个数,如果没有返回0,有的话返回子字符串的个数题目分析:1、顺序遍历字符串,然后用strncmp比较即可算法实现:#include #include int sub_st原创 2014-06-16 16:56:22 · 1608 阅读 · 0 评论 -
数据结构——算法之(013)( 求和1+2+3+...N)
【申明:本文仅限于自我归纳总结和相互交流,有纰漏还望各位指出。 联系邮箱:Mr_chenping@163.com】题目:求和1+2+3+...N 要求不能使用乘除法、for、while、if、else、switch、case等关键字以及条件判断语句.题目分析:一、首先,题目不允许使用while,那我们得想到循环的唯一方法递归二、不能使用if语句,那么可以巧用原创 2014-05-24 11:16:31 · 1763 阅读 · 0 评论 -
数据结构——算法之(018)( 和为n连续正数序列)
【申明:本文仅限于自我归纳总结和相互交流,有纰漏还望各位指出。 联系邮箱:Mr_chenping@163.com】题目:输入一个正数n,输出所有和为n连续正数序列例如输入15,由于1+2+3+4+5=4+5+6=7+8=15,所以输出3个连续序列1-5、4-6和7-8。题目分析:一、首先是连续的序列,则个数至少是2,假如输入的是15,则循环到中间就可以了原创 2014-05-25 21:04:46 · 827 阅读 · 0 评论 -
数据结构——算法之(017)( 如何对n个数进行排序,要求时间复杂度O(n),空间复杂度O(1))
【申明:本文仅限于自我归纳总结和相互交流,有纰漏还望各位指出。 联系邮箱:Mr_chenping@163.com】题目:如何对n个数进行排序,要求时间复杂度O(n),空间复杂度O(1)题目分析:一、乍一看,不可能完成。时间复杂度为n,纵观所有的排序法,没有达到这个级别的二、如果针对的是有限个数排列,可以采用标记法,或者说它是一种hash思想的方法,申原创 2014-05-25 20:51:56 · 1319 阅读 · 0 评论 -
数据结构——算法之(023)( 单链表就地逆置,头插法)
【申明:本文仅限于自我归纳总结和相互交流,有纰漏还望各位指出。 联系邮箱:Mr_chenping@163.com】题目:单向链表的就地逆置题目分析:一、方法很多,这里使用头插法(1)顺序遍历链表,并把每个节点从新插入在头结点后面(2)其实就是简单的头插法建立链表的过程算法实现:#include #include typedef st原创 2014-06-04 15:38:57 · 8400 阅读 · 0 评论 -
数据结构——算法之(002)(字符串反转)
【申明:本文仅限于自我归纳总结和相互交流,有纰漏还望各位指出。 联系邮箱:Mr_chenping@163.com】题目:实现字符串反转题目分析:一、以N/2(N为字符串长度),依次交换左右两边的字符即可算法实现:#include #include #include char * revstr(char *str){ char *h = str; c原创 2014-05-20 09:14:22 · 927 阅读 · 0 评论 -
数据结构——算法之(004)(输入一个单向链表,输出该链表中倒数第k个结点)
【申明:本文仅限于自我归纳总结和相互交流,有纰漏还望各位指出。 联系邮箱:Mr_chenping@163.com】题目:输入一个单向链表,输出该链表中倒数第k个结点。链表的倒数第0个结点为链表的尾指针。链表结点定义如下: struct ListNode{ int m_nKey; ListNode* m_pNext;};题目分析:解法一、先计算链原创 2014-05-20 15:00:50 · 1073 阅读 · 0 评论 -
数据结构——算法之(003)( 翻转句子中的单词)
【申明:本文仅限于自我归纳总结和相互交流,有纰漏还望各位指出。 联系邮箱:Mr_chenping@163.com】题目:输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。句子中单词以空格符隔开。为简单起见,标点符号和普通字母一样处理。例如输入“I am a student.”,则输出“student. a am I”。题目分析:解法一、翻转2次字符串,原创 2014-05-20 11:54:31 · 1105 阅读 · 0 评论 -
数据结构——定长串操作
【申明:本文仅限于自我归纳总结和相互交流,有纰漏还望各位指出。 联系邮箱:Mr_chenping@163.com】这里的串就是字符串的意思,串(string)是由零个或多个字符组成的有限序列,又名叫字符串,那么定长串顾名思义就是对固定长度的字符串进行操作。定长串的操作同字符串一样,只是应该注意串长,防止越界访问导致莫名其妙的错误。首先我们必须了解的定长串的相关名词:串 长:翻译 2013-02-27 14:45:03 · 2098 阅读 · 0 评论 -
数据结构——单向链表操作
【申明:本文仅限于自我归纳总结和相互交流,有纰漏还望各位指出。 联系邮箱:Mr_chenping@163.com】 单向链表(单链表),是链表中最简单的一种。顾名思义单向链表必须从头部开始读取顺序访问每个节点单向链表特点如下:一、每个节点包含一个指向链表下一节点的指针。二、链表最后一个节点指针字段为NULL。三、为了记住链表的起始位置,我们定义了一个头指针,它不包含任何数据原创 2012-11-26 01:36:37 · 929 阅读 · 0 评论 -
数据结构——队列
【申明:本文仅限于自我归纳总结和相互交流,有纰漏还望各位指出。 联系邮箱:Mr_chenping@163.com】队列是一种特殊的线性表,它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作。进行插入操作的端称为队尾,进行删除操作的端称为队头。队列中没有元素时,称为空队列。在队列这种数据结构中,最先插入的元素将是最先被删除的元素;反之最后插入的元素将是最后被删除的原创 2013-01-30 09:58:57 · 804 阅读 · 0 评论 -
数据结构——双向链表
【申明:本文仅限于自我归纳总结和相互交流,有纰漏还望各位指出。 联系邮箱:Mr_chenping@163.com】前几天写了一个单向链表,今天参考自己单向链表改写了一个双向非循环链表,下面只讨论双向非循环链表。双向非循环链表有如下特点:一、双向链表每个结点都有一个前驱指针和后驱指针(当然头结点和尾结点除外)。二、双向链表中的任意一个结点开始,都可以很方便地访问它的前驱结点和后继结点原创 2012-11-28 10:59:23 · 878 阅读 · 0 评论 -
数据结构——栈
【申明:本文仅限于自我归纳总结和相互交流,有纰漏还望各位指出。 联系邮箱:Mr_chenping@163.com】 栈(stack) 是限定仅在表位进行插入或删除操作的线性表。因此,对栈来说,表尾端有其特殊含义,称为栈定(top),响应地,表头端称为栈底。不含元素的空表称为栈空。栈特点:先进先出。栈的实现方法有很多种,可以采用静态数组、链表等。 参考c和c++书中原创 2012-11-26 15:28:09 · 645 阅读 · 0 评论 -
数据结构——单向循环链表
【申明:本文仅限于自我归纳总结和相互交流,有纰漏还望各位指出。 联系邮箱:Mr_chenping@163.com】 上一次我写过单向链表,单向循环链表和单向链表类似,仅仅是循环条件不同而已。单向循环链表特点:一、每个节点依旧跟单向链表一样,包含一个指向下一节点的指针。二、最后一个节点不在指向NULL,指向第一个节点。三、单向循环链表可以从任意一个节点出发遍历整个链表。原创 2012-11-26 09:54:17 · 1185 阅读 · 0 评论 -
数据结构——算法之(024)(在字符串中找出连续最长的数字串,并把这个串的长度返回)
【申明:本文仅限于自我归纳总结和相互交流,有纰漏还望各位指出。 联系邮箱:Mr_chenping@163.com】题目:写一个函数,它的原形是int continumax(char *outputstr,char *intputstr)功能:在字符串中找出连续最长的数字串,并把这个串的长度返回,并把这个最长数字串付给其中一个函数参数outputstr所指内存原创 2014-06-04 15:47:11 · 2314 阅读 · 0 评论 -
数据结构——算法之(025)( 求一个数组的最长递减子序列)
【申明:本文仅限于自我归纳总结和相互交流,有纰漏还望各位指出。 联系邮箱:Mr_chenping@163.com】题目:创新工场(算法):求一个数组的最长递减子序列 比如{9,4,3,2,5,4,3,2}的最长递减子序列为{9,5,4,3,2}题目分析:一、这个题目类似:在一个字符串中求最长数字串(1)快慢指针操作,每次指针调整前,先保存上一次的值(原创 2014-06-04 15:55:17 · 1141 阅读 · 0 评论 -
数据结构——算法之(026)( 调整数组顺序使奇数位于偶数前面)
【申明:本文仅限于自我归纳总结和相互交流,有纰漏还望各位指出。 联系邮箱:Mr_chenping@163.com】题目:输入一个整数数组,实现一个函数调整数组的元素顺序,使得奇数位于偶数的前半部分,偶数位于数组的后半部分。时间复杂度O(n)题目分析:类似题目:(1)没有要求调整后,位置不可以变化(2)时间复杂度智能遍历一次算法实现:#includ原创 2014-06-04 16:00:15 · 1493 阅读 · 0 评论