严薇敏
Attention_0
这个作者很懒,什么都没留下…
展开
-
数据结构严薇敏——KMP算法之next数组优化代码实现
前面实现的next数组依然还有缺陷,当模式串中失配元素很多相同的前缀,有一部分的比较是不需要的。 例如下面这种情况可以明显看出: 因为模式串中第1、2、3个字符和第4个字符都相等,因此不需要要再和第四个字符比较,而可以直接进行i = 5, j = 1时的字符比较,这里就是需要优化的部分。 实现代码: #include <stdio.h> #include <std...原创 2018-07-31 09:13:52 · 399 阅读 · 0 评论 -
数据结构严薇敏——队列的链式存储(C语言)
如果用户的应用程序中设有循环队列,必须设定一个最大队列长度,若无法估计队列的长度,则采用链队列。 关于队列的描述请看前面的博客。 链队列代码: 它的数据结构定义为: typedef int ElemType; typedef struct QNode { ElemType data; struct QNode *next; }QNode; typedef struct ...原创 2018-07-28 09:53:25 · 279 阅读 · 0 评论 -
数据结构严薇敏——队列的顺序存储(C语言)
和栈相反,队列是一种先进先出的线性表。只能在表的一端进行插入,另一端进行删除。(类似与我们排队买东西,先到先得) 队列中,允许插入的一端叫做队尾,允许删除的一端叫队头。 代码实现 : 顺序数据结构定义为: typedef int ElemType; typedef struct SqQueue { ElemType data[MAX_SIZE]; int size; ...原创 2018-07-28 08:57:08 · 572 阅读 · 0 评论 -
循环队列的应用——约瑟夫问题
约瑟夫问题 约瑟夫问题(有时也称为约瑟夫斯置换,是一个出现在计算机科学和数学中的问题。在计算机编程的算法中,类似问题又称为约瑟夫环。又称“丢手绢问题”.) 问题来历 据说著名犹太历史学家 Josephus有过以下的故事:在罗马人占领乔塔帕特后,39 个犹太人与Josephus及他的朋友躲到一个洞中,39个犹太人决定宁愿死也不要被敌人抓到,于是决定了一个自杀方式,41个人排成一个圆圈,由...原创 2018-07-27 19:29:22 · 4124 阅读 · 0 评论 -
数据结构严薇敏——栈的链式存储(C语言)
栈的链式存储和线性表的链式存储很类似,区别只是线性表的操作比较自由,而栈只能限定在表尾进行插入和删除。可以借助线性表的头插法来理解栈。 它的数据定义结构为: typedef struct LinkNode { ElemType data; struct LinkNode *next; }LinkNode; typedef struct LinkStack //...原创 2018-07-27 10:14:14 · 259 阅读 · 0 评论 -
数据结构严薇敏——栈的顺序存储(C语言)
栈是限定只能在表尾进行插入和删除操作的线性表。 栈的特点是后进先出。 它的顺序数据结构定义为 typedef struct SQSTACK { ElemType *base; ElemType *top; int stacksize; }SqStack; 头文件#include"SqStack.h" #ifndef SQSTACK_H_INCLU...原创 2018-07-27 09:56:36 · 461 阅读 · 0 评论 -
数据结构严薇敏——线性表的链式存储(C语言)
线性表的链式存储结构特点使用一组任意的存储单元存储线性表的数据元素(这组存储单元地址可以是连续的,也可以是不连续的)。因此,为了表示每个数据元素与其前后的数据元素的逻辑关系,除了需要存储本身的数据信息之外,还需要存储一个指针来指向当前位置的下一个数据元素的位置。于是需要定义一个数据类型,里面包含两个域,数据域和指针域,我们称之为结点。 其数据类型(结点)定义方式如下: typedef str...原创 2018-07-25 08:30:09 · 808 阅读 · 0 评论 -
数据结构严薇敏——简单二叉树的建立、先序、中序、后序递归遍历及求叶子结点数
采用二叉树的二叉链表存储表示 它的存储结构为: typedef char ElemType; typedef struct BiTNode { ElemType data; struct BiTNode *lchild,*rchild; }BiTNode; 使用递归来实现下图中二叉树的建立、遍历、求叶子节点。 实现代码: #include <stdio....原创 2018-07-31 18:43:00 · 1470 阅读 · 0 评论 -
数据结构严薇敏——串的定义、操作(C语言)
串的三种存储表示:定长顺序存储结构、块链存储结构和堆分配存储结构。以下采用的是堆分配存储结构: 它的数据类型定义为: typedef struct { char *ch; int length; //串长度 }HString; 串的逻辑结构和线性表很相似,区别仅在于数据对象为字符集。然而,串的基本操作和线性表有很大的差别。在线性表中,大多数以“单个元素”作...原创 2018-07-29 19:28:30 · 1104 阅读 · 0 评论 -
数据结构严薇敏——KMP算法之next数组代码实现
KMP算法是在已知模式串的next函数值的基础上执行的,所以必须先求出模式串的next数组值。 具体原理可以参考视频讲解:https://www.bilibili.com/video/av21828275/?p=39 实现代码如下: #include <stdio.h> #include <stdlib.h> #include <string.h> #...原创 2018-07-30 19:33:38 · 922 阅读 · 0 评论