![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构与算法
yiluohan0307
这个作者很懒,什么都没留下…
展开
-
字符串转换为数字
今天面试的时候,主考官问到了这样一个问题。所以私下通过查找资料整理了一下。题目:输入一个表示整数的字符串,把该字符串转换成整数并输出,例如输入字符串"345", 则输出整数 345。给定函数原型 int StrToInt(const char *str),完成函数 StrToInt,实现字符串转换成整数的功能,不得用库函数atoi/***************原创 2016-07-05 15:05:03 · 436 阅读 · 0 评论 -
一个整型数组里除了两个数字之外,其他的数字都出现了两次,请写程序找出这两个出现一次的数字
算法描述:一个整型数组里除了两个数字之外,其他的数字都出现了两次,请写程序找出这两个出现一次的数字,要求时间复杂度为O(n),空间复杂度是O(1)算法实现:异或的性质:任何数字异或它自己都是0./************************************************************************* > File Name: main原创 2016-04-18 09:44:26 · 995 阅读 · 0 评论 -
给定单链表的头指针和一个结点指针,定义一个函数在O(1)时间删除该节点
算法描述:给定单链表的头指针和一个结点指针,定义一个函数在O(1)时间删除该节点算法实现:/************************************************************************* > File Name: main.c > Author: cyf > Mail: XXX@qq.com > Created Time:原创 2016-05-25 15:14:23 · 1794 阅读 · 0 评论 -
输入一个整数数组,实现一个函数来调整该数组中数字的顺序使得 所有奇数位于数组的前半部分,所有偶数位于数组后半部分
算法描述:输入一个整数数组,实现一个函数来调整该数组中数字的顺序使得 所有奇数位于数组的前半部分,所有偶数位于数组后半部分算法实现:/************************************************************************* > File Name: main.c > Author: cyf > Mail: XXX@qq原创 2016-05-24 09:23:31 · 3136 阅读 · 0 评论 -
C语言排序算法
#include #include void swap(int k[],int lo,int hi){ int temp; temp=k[lo]; k[lo]=k[hi]; k[hi]=temp;}/***冒泡排序*/void BubbleSort(int k[],int n){ int i,j,temp,count1=0,count2原创 2015-05-05 11:13:44 · 262 阅读 · 0 评论 -
输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不改变
/************************************************************************* > File Name: reverse.c > Author: cyf > Mail: 1097189275@qq.com > Created Time: 2016年03月25日 星期五 15时22分06秒 **************原创 2016-04-12 10:56:24 · 2826 阅读 · 0 评论 -
输入n个整数,找出其中最小的k个数
算法描述:输入n个整数,找出其中最小的k个数算法实现:/************************************************************************* > File Name: main.c > Author: cyf > Mail: XXX@qq.com > Created Time: 2016年04月25日 星期一 1原创 2016-04-28 09:48:24 · 1377 阅读 · 0 评论 -
输入一颗二叉树的根节点,求该树的深度
算法描述:输入一颗二叉树的根节点,求该树的深度,从根节点到叶节点依次经过的结点形成一条路径,最长路径的长度为树的深度算法实现:/************************************************************************* > File Name: main.c > Author: cyf > Mail: XXX@q原创 2016-04-15 09:27:56 · 1581 阅读 · 0 评论 -
数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字
算法描述:数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字算法实现:/************************************************************************* > File Name: main.c > Author: cyf > Mail: XXX@qq.com > Created Time: 2016原创 2016-04-27 08:54:00 · 597 阅读 · 0 评论 -
输入一个整数n,求从1到n这n个整数的十进制表示中1出现的次数
算法描述:输入一个整数n,求从1到n这n个整数的十进制表示中1出现的次数算法实现:/************************************************************************* > File Name: main.c > Author: cyf > Mail: XXX@qq.com > Created Time: 2016年原创 2016-04-26 10:09:08 · 817 阅读 · 0 评论 -
输入一个正数s,打印出所有和为s的连续正数序列
算法描述:输入一个正数s,打印出所有和为s的连续正数序列算法实现:/************************************************************************* > File Name: main.c > Author: cyf > Mail: 1097189275@qq.com > Created Time: 201原创 2016-04-13 10:02:24 · 937 阅读 · 0 评论 -
把n个骰子扔在地上,所有骰子朝上一面的点数之和为s。输入n,打印s的所有可能的值得出现的概率
一、算法描述把n个骰子扔在地上,所有骰子朝上一面的点数之和为s。输入n,打印s的所有可能的值得出现的概率二、算法实现/************************************************************************* > File Name: PrintProbability.c > Author: cyf > Mail: 10原创 2016-04-08 10:27:09 · 1354 阅读 · 0 评论 -
从扑克牌中随机抽取5张牌,判断是不是一个顺子。
算法描述:从扑克牌中随机抽取5张牌,判断是不是一个顺子,即这5张牌是不是连续的2-10位数字本身,A为1,J为11,Q为12,K为13,而大小王可以看成任意数字算法解决:/************************************************************************* > File Name: continusCards.c >原创 2016-04-07 14:12:00 · 14176 阅读 · 0 评论 -
输入一个字符串,打印出该字符串中字符的所有排列
算法描述:输入一个字符串,打印出该字符串中字符的所有排列算法实现:/************************************************************************* > File Name: main.c > Author: cyf > Mail: XXX@qq.com > Created Time: 2016年04月27日原创 2016-05-05 10:04:47 · 1695 阅读 · 0 评论 -
输入一个递增排序的数组和一个数字s查找两个数,使得它们的和正好是s
算法描述:输入一个递增排序的数组和一个数字s查找两个数,使得它们的和正好是s,如果有多对数字的和等于s,输出任意一对即可例如:[1, 2, 4, 7, 11, 15]:15->4,11算法实现:/************************************************************************* > File Name:原创 2016-05-05 10:06:02 · 930 阅读 · 0 评论 -
将一个链表翻转
算法描述:将一个链表翻转算法实现:/************************************************************************* > File Name: main.c > Author: cyf > Mail: XXX@qq.com > Created Time: 2016年05月19日 星期四 09时00分24秒 **原创 2016-05-23 10:43:45 · 341 阅读 · 0 评论 -
输入一个链表,输出该链表中倒数第k个结点
算法描述:输入一个链表,输出该链表中倒数第k个结点算法实现:/************************************************************************* > File Name: main.c > Author: cyf > Mail: XXX@qq.com > Created Time: 2016年05月19日 星期四原创 2016-05-22 11:00:46 · 328 阅读 · 0 评论 -
输入两颗二叉树A和B,判断B是不是A的子结构
算法描述:输入两颗二叉树A和B,判断B是不是A的子结构算法实现:/************************************************************************* > File Name: main.c > Author: cyf > Mail: XXX@qq.com > Created Time: 2016年05月18日原创 2016-05-22 10:59:30 · 612 阅读 · 0 评论 -
输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个
算法描述:输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个解决大数问题的方法是吧数字转换成字符串算法实现:/************************************************************************* > File Name: main.c > Author: cyf > Ma原创 2016-04-24 17:09:03 · 4109 阅读 · 0 评论 -
输入一个整数数组,判断该数组是不是某二元查找树的后序遍历的结果
算法描述:输入一个整数数组,判断该数组是不是某二元查找树的后序遍历的结果。如果是返回true,否则返回false。 例如输入5、7、6、9、11、10、8,由于这一整数序列是如下树的后序遍历结果: 8 / \ 6 10 / \ / \5 7 9 11因此返回true。如果输入7、4、6、5,没有哪棵树的后序遍历的结果是这个序列,因此原创 2016-04-24 17:07:24 · 2822 阅读 · 1 评论 -
输入两个递增排序的链表,合并这两个链表并使新链表中的结点仍然按照递增排序
算法描述:输入两个递增排序的链表,合并这两个链表并使新链表中的结点仍然按照递增排序算法实现:/************************************************************************* > File Name: main.c > Author: cyf > Mail: XXX@qq.com > Created Time原创 2016-05-19 10:10:34 · 1559 阅读 · 0 评论 -
输入一个矩阵,按照从外到里以顺时针的顺序依次打印每一个数字
算法描述:输入一个矩阵,按照从外到里以顺时针的顺序依次打印每一个数字算法实现:/************************************************************************* > File Name: main.c > Author: cyf > Mail: XXX@qq.com > Created Time: 2016年原创 2016-05-18 14:28:36 · 865 阅读 · 0 评论 -
求从小到大的第1500个丑数
算法描述:我们把只包含2,3和5的数称为丑数,求从小到大的第1500个丑数算法实现:/************************************************************************* > File Name: main.c > Author: cyf > Mail: XXX@qq.com > Created Time: 20原创 2016-04-22 09:17:22 · 826 阅读 · 0 评论 -
输入数字n,按顺序打印出从0到最大n位十进制数
算法描述:输入数字n,按顺序打印出从0到最大n位十进制数算法实现:/************************************************************************* > File Name: main.c > Author: cyf > Mail: XXX@qq.com > Created Time: 2016年05月22日原创 2016-05-30 14:26:56 · 616 阅读 · 0 评论 -
字符串匹配算法
字符串匹配(string match)是在实际工程中经常会碰到的问题,通常其输入是原字符串(String)和子串(又称模式,Pattern)组成,输出为子串在原字符串中的首次出现的位置。通常精确的字符串搜索算法包括暴力搜索(Brute force),KMP, BM(Boyer Moore), sunday, robin-karp 以及 bitap。下面分析这几种方法并给出其实现。假设原字符串长原创 2016-05-06 11:13:01 · 716 阅读 · 0 评论 -
输入一颗二叉搜索树,将该二叉搜索树转换成一个排序的双向链表
算法描述:输入一颗二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针。算法实现:/************************************************************************* > File Name: main.c > Author: cyf > Mail: XXX@qq.com原创 2016-05-06 09:02:03 · 520 阅读 · 0 评论 -
在字符串中找出第一个只出现一次的字符
算法描述:在字符串中找出第一个只出现一次的字符算法实现:/************************************************************************* > File Name: FirstNotRepeatingChar.h > Author: cyf > Mail: XXX@qq.com > Created Time:原创 2016-04-21 09:09:19 · 573 阅读 · 0 评论 -
输入两个链表,找出它们的第一个公共节点(值)
输入两个链表,找出它们的第一个公共节点(值)方法1:在第一个链表上顺序遍历每个节点,没遍历一个节点时,在第二个链表上顺序遍历每个节点。方法2:计算每个链表的长度,长的链表先遍历两个链表长度差个节点,然后两个链表同时遍历,当他们相等时停止/*************************************************************************原创 2016-03-25 17:53:31 · 474 阅读 · 0 评论 -
统计一个数字在排序数组中出现的次数
主要包括四个文件main.c /GetNumOfKey.c/GetNumOfKey.h/Makefile/************************************************************************* > File Name: main.c > Author: cyf > Mail: XXXX@qq.com > Created Ti原创 2016-03-24 10:51:01 · 308 阅读 · 0 评论 -
C语言实现逆波兰表达式
#include #include #include #define STACK_INIT_SIZE 20#define STACKINCREMENT 10#define MAXBUFFER 10typedef double ElemType;typedef struct{ ElemType *base; ElemType *top; int stack原创 2015-05-18 13:05:30 · 11442 阅读 · 2 评论 -
win7 usb 无法识别
几天前在公司的WIN7 下用安国量产工具对一个扩容U盘进行低格修复,哪知道关闭量产工具后系统无法识别,而且U盘上的指示灯也只是在插入的瞬间亮了一下就没反应了,原以为U盘被我低格弄挂了(以前用低格弄挂过硬盘。。。)。回去后试了一下,没想到插到XP上能看到U盘,不过却是0空间而且一打开就“提示请插入驱动器”,不甘心之下换了3个量产工具进行了8次量产才使这个扩容盘能够被识别使用,不过16G变成了12G,转载 2015-06-18 22:05:04 · 662 阅读 · 0 评论 -
栈的顺序存储结构
#include #include #define MAXSIZE 20#define ERROR 0#defien OK 1typedef int ElemType;typedef int Status;typedef struct{ ElemType data[MAXSIZE]; int top;}SqStack;Status Push(SqStack原创 2015-05-21 17:37:14 · 378 阅读 · 0 评论 -
约瑟夫问题
#include #include /*据说著名犹太历史学家josephus有过以下的故事:在罗马人占领桥塔帕特后,39个犹太人与josephus及他的朋友躲到一个洞中39个犹太人决定宁愿死也不要被敌人抓到,于是决定了一个自杀方式,41个人排成一个圆圈,由第一个人开始报数,每报到第三个人,该人就自杀,然后再由下一个重新报数,直到所有人都自杀身亡为止。问题:用循环链表原创 2015-05-07 12:54:42 · 453 阅读 · 0 评论 -
五大常用算法之一:分治算法
一、基本概念在计算机科学中,分治法是一种很重要的算法。字面上的解释是“分而治之”,就是把一个复杂的问题分成两个或更多的相同或相似的子问题,再把子问题分成更小的子问题。。。直到最后子问题可以简单的直接求解,原问题的解即子问题的解的合并。这个技巧是很多高效算法的基础,如排序算法(快速排序,递归排序),傅里叶变换(快速傅里叶变换)。。。转载 2015-04-24 13:52:28 · 264 阅读 · 0 评论 -
C语言栈的链式存储结构
#include #include #define OK 1#define ERROR 0/***栈的链式存储结构,简称栈链**栈因为只是栈顶来做插入和删除操作,所以比较好的方法**就是将栈顶放在单链表的头部,栈顶指针和单链表的头指针和二为一*/typedef int ElemType;typedef int Status;typedef struct StackNode{原创 2015-05-15 12:33:05 · 645 阅读 · 0 评论 -
魔术师发牌问题
#include #include #define CardNumber 13/*魔术师利用一副牌中的13张黑牌,预先将他们拍好后叠在一起,牌面朝下对观众说:“我不看牌,只数数就可以猜到每张牌是什么,我大声数数,你们听,不信?现场演示”。魔术师将最上面的那张牌数为1,把他翻过来正好是黑桃A,将黑桃A放在桌子上,第二次数1,2将第一张牌放在这些牌的下面,将第二张牌翻过来,正好是黑桃2原创 2015-05-13 13:36:42 · 510 阅读 · 0 评论 -
判断单链表是否有环
#include #include #include #define OK 1#define ERROR 0#define TRUE 1#define FALSE 0typedef int Status;typedef int ElemType;/*判断单链表中是否有环方法一: 使用p,q两个指针,p总是向前走,但q每次都从头开始走,对于每个节点 看p走的步数原创 2015-04-23 20:42:31 · 289 阅读 · 0 评论 -
双向链表的实践(C语言)
#include #include #define OK 1#define ERROR 0typedef char ElemType;typedef int Status;/***要求实现用户输入一个数使得26个字母的排列发生变化,例如**用户输入3,输出结果:**DEFGHIJKLMNOPQRSTUVWXYZ**同时需要支持负数,例如用户输入-3,输出结果为:**XYZDE原创 2015-05-11 20:10:58 · 464 阅读 · 0 评论 -
栈和其在二进制转换为十进制的应用(c语言)
#include #include #include /***栈是一种重要的线性结构。栈是前面讲过的线性表的一种具体形式。**它遵循后进先出原则**栈是一个后进先出的线性表,它要求只在表尾进行删除和插入操作**表尾称为栈的栈顶(top)表头称为栈底(bottom)**栈的插入操作(push)叫做进栈(压栈)栈的删除操作(pop)叫做出栈(弹栈)**栈也分为顺序存储结构和链式存储原创 2015-04-29 09:44:00 · 441 阅读 · 0 评论 -
五大常用算法之三:贪心算法
一、基本概念所谓贪心算法是指,在对问题求解时,总是做出在当前看来是最好的选择。也就是谁,不从整体最优上加以考虑,他所作出的仅是在某种意义上的局部最优解。贪心算法没有固定的算法框架,算法设计的关键是贪心策略的选择。必须注意的是,贪心算法不是对所有问题都能得到整体最优解,选择的贪心策略必须具备无后效性,即某个状态以后的过程不会影响以前的状态,至于当期状态有关。所以对所采用的贪心算法转载 2015-04-09 21:31:36 · 466 阅读 · 0 评论