随笔分类 -  数据结构与算法

C语言版,啃啃算法,修炼内功
摘要:问题:如下面一颗树形结构,如何删除节点C? T T / \ / \ A E A E / \ -> / \ B C B D / D 首先树节点的结构体: 初始化节点: 创建一颗上图所示的树 现在我想删除C节点 通过中序输出后的效果要达到如下: 删除前: 10 30 40 50 70 90 删除后: 1 阅读全文
posted @ 2018-01-29 16:17 Khazix 阅读(251) 评论(0) 推荐(0) 编辑
摘要:#include #include #define OK 1 typedef int Status; typedef struct { char *data; int len; }String; Status strInit(String *T){ T->data = NULL; T->len = 0; return OK; } //**************... 阅读全文
posted @ 2018-01-11 20:40 Khazix 阅读(183) 评论(0) 推荐(0) 编辑
摘要:http://blog.csdn.net/luomingjun12315/article/details/47438607 阅读全文
posted @ 2017-10-24 11:00 Khazix 阅读(330) 评论(0) 推荐(0) 编辑
摘要:长篇慎入,点击直接跳看最后一段代码 从n个不同的元素中取m个元素(m<=n),按照一定的顺序排列起来, 叫做从n个不同元素取出m个元素的一个排列。 当m=n时,所有的排列情况叫做全排列,比如3的全排列为: 我们先从简单的开始,要求写出代码打印上面的排列情况即可,顺序可以不一致。 分析过程: 首先,我 阅读全文
posted @ 2017-09-08 23:28 Khazix 阅读(2908) 评论(0) 推荐(0) 编辑
摘要:字符串的模式匹配是一个比较经典的问题:假设有一个字符串S,称其为主串,然后还有一个字符串T,称其为子串。 现在要做的是,从主串S当中查找子串T的位置,如果存在返回位置值,如果不存在返回-1。另外主串又称为目标串, 子串称为模式串。 暴力匹配算法 这是一个经典的串匹配问题,涉及的算法也比较多,先讨论第 阅读全文
posted @ 2017-09-03 22:21 Khazix 阅读(856) 评论(1) 推荐(0) 编辑
摘要:由于静态顺序存储使用C语言实现有些麻烦,其次容易产生溢出,因此就不对串的静态顺序存储实现了,而是采用 动态顺序存储,使得存储串的长度可以动态分配存储空间。下面是它的实现代码 阅读全文
posted @ 2017-09-03 21:41 Khazix 阅读(492) 评论(0) 推荐(0) 编辑
摘要:打印杨辉三角的数据结构使用的是队列,下面的代码设计的很巧妙 对于新手的我来说设计难度还是比较大,想了半天想不出来 因此在这里分享一下,也同时方便以后欣赏欣赏 , 下面的代码使用C语言实现... 阅读全文
posted @ 2017-08-25 10:15 Khazix 阅读(221) 评论(0) 推荐(0) 编辑
摘要:链队列代码 判断是否为回文 阅读全文
posted @ 2017-08-05 22:18 Khazix 阅读(435) 评论(0) 推荐(0) 编辑
摘要:队列:一种特殊的线性表,其特性就是先进先出(FIFO),即从一端进从另一端出 队头:允许删除的一端 front 队尾:允许插入的一端 rear 如下图所示,出队和入队的流程: 可以发现,无论是出队还是入队,front指针 和 rear指针都会增加而不是减少,因此很容易造成溢出 和 空间浪费 因此队列 阅读全文
posted @ 2017-08-05 13:52 Khazix 阅读(1440) 评论(0) 推荐(1) 编辑
摘要:栈也是一种线性表,只不过是受限制的线性表 只能从一端读取或者删除元素。先进后出特性(FILO) 栈也分为顺序栈和链表栈 顺序栈不需要额外的空间来指明下个节点的位置,空间利用率高 但是不能动态扩容,而链表栈刚好与之相对。下面是两种栈的代码 顺序栈 链表栈 阅读全文
posted @ 2017-07-08 21:02 Khazix 阅读(877) 评论(0) 推荐(0) 编辑
摘要:十进制转二进制 十进制通过除而取余数得到的二进制,最后需要倒过来展示。 判断是否为回文 回文是指无论是正读,还是倒读都是一样的。 判断括号是否匹配 括号有:圆括号,方括号,花括号三种 下面的程序可以判断括号是否一对一对存在且不乱序。 阅读全文
posted @ 2017-07-08 20:53 Khazix 阅读(580) 评论(0) 推荐(0) 编辑
摘要:顺序表 [代码] 优点 缺点 单链表 [代码] 优点: 缺点: 循环链表 [代码] 双向链表 [代码] 静态链表 [代码] 缺点: 说明: 与单链表性质是一样的,只是是在数组上建立的静态链表,优缺点基本和单链表相同。 静态链表最好用单链表替代,因为静态链表的缺点多,优点和单链表一样。 而静态链表的存 阅读全文
posted @ 2017-07-06 13:31 Khazix 阅读(525) 评论(0) 推荐(1) 编辑
摘要:在单链表当中,从已知节点出发,只能访问该节点的后继节点,却无法访问 该节点之前的节点,在单循环链表当中,虽然可以通过一个节点访问表中所 有节点,但是要找到直接前驱却要遍历整个表,因此为了加快寻找某个节点 的前驱,可以在每个节点的结构体上添加一个直接访问前驱的指针域来快速 定位前驱节点。下面是简单的双 阅读全文
posted @ 2017-07-05 21:13 Khazix 阅读(302) 评论(0) 推荐(0) 编辑
摘要:单链表中最后一个节点的指针域为空,如果将这个空的指针域指向头结点, 整个链表就形成了一个环形结构,故称为循环链表,这样从任意一个节点出发均可以找到 其他节点。循环链表与单链表的区别仅在于判断最后一个节点是否为头结点,而不是判断节点 是否为空。其插入和删除操作与单链表没有什么区别 阅读全文
posted @ 2017-07-05 20:31 Khazix 阅读(631) 评论(0) 推荐(0) 编辑
摘要:#include #include #include #define OK 1 #define ERROR 0 #define OVERFLOW -2 typedef int ElemType; typedef int Status; typedef struct Node{ ElemType data; struct Node * next; } Node; typedef ... 阅读全文
posted @ 2017-07-05 00:55 Khazix 阅读(3953) 评论(0) 推荐(0) 编辑
摘要:#include #include #include #define ERROR 1 #define MAX 100 //定义最大初始化长度 #define DELAY 2 //定义延时单位秒 typedef int ElemType; typedef int STATUS; typedef struct Linknode{ //单链表结构体 int... 阅读全文
posted @ 2017-07-05 00:49 Khazix 阅读(629) 评论(0) 推荐(0) 编辑
摘要:下面是另一种写法(但推荐使用上面一种) 阅读全文
posted @ 2017-07-05 00:35 Khazix 阅读(2350) 评论(0) 推荐(0) 编辑
摘要:#include #include #include #define OK 1 #define ERROR 0 #define MAX 1024 //顺序表最大长度 #define delay 2 //延迟两秒 typedef int ElemType; typedef int STATUS; typedef struct{ ElemType data... 阅读全文
posted @ 2017-07-05 00:27 Khazix 阅读(466) 评论(0) 推荐(0) 编辑
摘要:早期的编程语言不像C语言拥有指针功能,但是又希望能够实现单链表, 于是在数组的基础上创建了单链表,称为静态链表。 运行效果: 阅读全文
posted @ 2017-07-03 18:39 Khazix 阅读(1600) 评论(1) 推荐(0) 编辑
摘要:在c语言当中判断数组的长度是比较麻烦的,不像其他语言可以通过对象的属性或者方法来获得长度。 而有一种类似数组的数据结构叫线性表,可以用来很方便的获取数组的长度。其结构体为 该数据结构除了定义了一个长度为1024的数组外,还多定义一个变量last用于存储数组长度, 如果要使用这种数据类型完成基本的读写 阅读全文
posted @ 2017-06-29 22:52 Khazix 阅读(862) 评论(1) 推荐(1) 编辑