数据结构与算法
文章平均质量分 64
小黄鸭and小黑鸭
小黄鸭的快乐生活 嘻嘻(●'◡'●)
展开
-
数据结构——练习之学生信息操作
数据结构——练习之学生信息操作实现的功能如下:源码:#include #include #include #include /**定义学生数据对象的结构体**/struct stu_node{ char name[10]; int score; struct stu_node *next;};typedef struct stu_node Student; /原创 2017-04-08 12:22:27 · 1826 阅读 · 0 评论 -
数据结构——树形结构概念
数据结构——树形结构概念 线性数据结构中每个元素只有一个前驱元素和一个后继元素,即前驱元素和后继元素之间的关系是一对一的,但是树形结构中每个元素只有一个前驱元素,但是可能有多个后继元素,即前驱元素与后继元素之间的关系是一对多的。树形结构主要应用于文件系统、目录组织等大量数据处理中。如: 基本概念:树的结点:包含一个数据元素和若干指向子树分支的信息结原创 2017-05-14 11:41:53 · 1766 阅读 · 0 评论 -
数据结构——二叉树定义
数据结构——二叉树定义 二叉树是树形结构中一种特殊的树形结构:二叉树中的每个结点至多有2棵子树(即每个结点的度小于等于2),并且两个子树有左右之分,顺序不可颠倒。在二叉树中还有种特殊的二叉树就是完全二叉树:所有结点中除了叶子结点以外的结点都有两棵子树。如果完全二叉树中只有最底层为叶子结点那么又称为满二叉树。 重要性质:二叉树中,第m-层最多有原创 2017-05-14 16:21:28 · 5511 阅读 · 0 评论 -
数据结构——二叉树的链式存储
数据结构——二叉树的链式存储注意输入二叉树元素时查看createBitTree方法中录入原则#include #include #include #include #include using namespace std;#define MaxSize 100/**二叉树链式存储**/typedef struct Node{ char e; struct Node原创 2017-05-16 13:34:07 · 714 阅读 · 0 评论 -
数据结构——树的存储
数据结构——树的存储 树的常用存储方法有三种:双亲表示法、孩子表示法和孩子兄弟表示法。1、双亲表示法 可以通过顺序存储实现,即不仅保存每个结点数据还要记录结点的父结点的存储位置。虽然这样寻找父结点比较方便,但是不便于寻找子结点。2、孩子表示法 可以使用顺序存储跟链式存储相结合实现,即每个结点要保存一个链表,该链表用来记录该原创 2017-05-17 21:47:23 · 1384 阅读 · 0 评论 -
数据结构——二叉树与树、森林的互换
数据结构——二叉树与树、森林的互换1、数转换成二叉树 转换步骤:在树的兄弟结点之间添加一条线在树中只保留父结点与第一个孩子结点的连线2、森林转换成二叉树 转换步骤:把森林中的树都转换成二叉树从第二棵树开始,把转换后的二叉树作为钱一棵树根结点的右子树插入到第一棵树中3、二叉树转换成原创 2017-05-17 22:05:42 · 806 阅读 · 0 评论 -
数据结构——霍夫曼树
数据结构——霍夫曼树1、xi定义原创 2017-05-17 22:27:15 · 5374 阅读 · 0 评论 -
数据结构——图的基本概念
数据结构——图的基本概念 不同于线性结构和树形结构,图结构中的元素之间的关系是多对多的。1、相关定义:图:图G由数据元素(顶点)集合V和边的集合E组成。分为无向图和有向图,无向图中边e的取值范围是0~n(n-1)/2,有向图中e的取值范围是0~n(n-1),其中n为图中顶点的个数。邻接点:在无向图G=(V,E)中,如果存在边(vi,vj)∈E,那么称vi和vj互为邻原创 2017-06-06 10:27:41 · 1313 阅读 · 1 评论 -
KMA算法实现
KMA算法实现/** * KMA字符串匹配算法 * @author KeXin * */public class Test{ public static int[] ComputePrefix(String p){ char[] P = p.toCharArray(); int m = P.length; int[] t = new int[m]; t[0] = ...原创 2017-05-22 22:07:00 · 1440 阅读 · 1 评论 -
字符串中的快速模式匹配2
字符串中的快速模式匹配22、算法程序 模式匹配过程的一般形式:将模式置于最左边;while 模式没有完全匹配and文本没有读完dobeginwhile模式字符不同于当前文本字符do正确移动模式;移动置文本下一个字符;end; 方便起见,我们假定输入文本以text[1:n]的...翻译 2017-05-14 23:19:49 · 518 阅读 · 0 评论 -
字符串中的快速模式匹配1
字符串中的快速模式匹配1 1、非正式推演: 如果我们想象着以某种方法把模式从文本的左边滑动至文本的最右面,那么本文讲的模式匹配方法可能就会很容易掌握了。举个例子,在文本babcbabcabcaabcabcabcacabc中搜索模式abcabcacab;刚开始,我们把模式放在输入文本的最左边并且准备扫描最左边的字符: 这里的箭头指...翻译 2017-05-09 16:30:26 · 1077 阅读 · 0 评论 -
字符串中的快速模式匹配0
字符串中的快速模式匹配1977作者:DONALD E.KNUTH,JAMES H,MORRIS,JR.VAUGHAN R.PRATTY 发表时间:1977 摘要:这是一个在一个字符串中找到另一个给定字符串所有事件的算法,运行时间与两个字符串长度之和成比例。其中比例系数很小,小到算法可以在实际中应用,并且这个过程可以推广到解决其他一般的模式匹配问题。该算法的一个理论应用表明即使...翻译 2017-05-08 14:05:29 · 634 阅读 · 0 评论 -
数据结构——栈实现括号匹配
数据结构——栈实现括号匹配真正学习之后,才发现那些所谓的大婶不过是多用功了些。不知道以前为什么不亲自动手做做,原来这么简单。#include #include #include #include /**栈的链式存储**/typedef struct Data{ char c;};typedef struct Stack{ Data data; Stack *to原创 2017-04-21 18:13:38 · 9840 阅读 · 3 评论 -
数据结构——特殊矩阵的压缩存储
数据结构——特殊矩阵的压缩存储矩阵的压缩存储:将矩阵的元素按照某种分布规律存储在较小的存储单元中。1、对称矩阵的压缩存储 n阶对称矩阵:一个n阶的矩阵A中的元素满足a(ij)=a(ji)(0(使用等差数列公式就可以推导出来,下同)#include #include #include #include /**对称矩阵压缩存储**/void Pr原创 2017-05-11 14:19:06 · 18430 阅读 · 1 评论 -
数据结构——练习之约瑟夫环问题
数据结构——练习之约瑟夫环问题 约瑟夫环是一个数学的应用问题:已知n个人(以编号1,2,3...n分别表示)围坐在一张圆桌周围。从编号为k的人开始报数,数到m的那个人出列;他的下一个人又从1开始报数,数到m的那个人又出列;依此规律重复下去,直到圆桌周围的人全部出列。很简单,直接附上代码了:#include #include #include #include /**定原创 2017-04-08 13:14:57 · 856 阅读 · 1 评论 -
数据结构——线性表概念
数据结构——线性表概念数据结构的逻辑结构分为集合结构、线性结构、树形结构以及图形结构四种,关于集合结构,元素与元素之间并没有其他关系,所以就从线性结构开始。线性结构的特点是:在飞控的有限集合中,只有唯一的第一个元素和唯一的最后一个元素,第一个元素没有前驱元素,最后一个元素没有后继元素,而其他元素都只有一个前驱元素和一个后继元素。就比如在超市结账时的队伍。线性表是最简单且常用的一种线性结原创 2017-04-10 12:45:35 · 508 阅读 · 0 评论 -
数据结构——线性表之顺序存储
数据结构——线性表之顺序存储1、线性表的顺序存储结构特点第i个元素和i+1个元素的存储位置满足:LOC(ai+1)=LOC(ai)+m (其中m是指每个元素所占的存储单元)即顺序存储将线性表的元素放在一组连续的存储单元中。在线性表中相邻的两个元素在物理存储单元中也相邻第i个元素与第一个元素的存储位置满足:LOC(ai)=LOC(a1)+(i-1)*m原创 2017-04-10 15:37:58 · 856 阅读 · 0 评论 -
数据结构——练习之双向链表实现
数据结构——练习之双向链表实现 为了掌握并使用双向链表,就动手写了这个小程序,包括一些双向链表的基本操作以及求集合并源码:#include #include #include #include /**双向链表**/typedef struct{ int number;}Node;typedef struct NodeList{ Node n; /原创 2017-04-10 20:55:48 · 497 阅读 · 0 评论 -
数据结构——线性表之链式存储
数据结构——线性表之链式存储1、单链表由于链式存储的物理存储单元不一定是连续的,所以除了需要存储元素本身的信息外,还需要存储其后继元素的地址信息,以此保证线性表中元素之间的逻辑关系。因此每个结点包括两个域:数据域和指针域,由于链表的指针域只有一个故称为单链表。每个指针指向后继元素的存储位置,当头节点的指针域为NULL时,链表为空。单链表的实现代码:学生信息操作系统2、循环单链表原创 2017-04-10 23:38:27 · 823 阅读 · 0 评论 -
数据结构——JAVA实现静态链表
数据结构——JAVA实现静态链表package com.kexin.study2;import java.util.Scanner;/** * 用JAVA实现静态链表 完成学生信息基本操作 * * @author KeXin * */class Node { private String name; private double score; int cur; p原创 2017-04-10 23:37:41 · 1622 阅读 · 0 评论 -
数据结构——简介
数据结构——简介1、几个基本概念数据:数据是指计算机接受的输入数据,比如:整型、浮点型等数值类型以及声音、图像、视频等非数值类型的数据数据元素:是组成数据有一定意义的基本单位,比如一个人的基本信息包括姓名、性别、年龄等数据对象:是性质相同的数据元素的集合,比如正整数数据对象N={1,2,3……}数据结构:是数据的组织形式,即数据元素之间存在的一种或几种特定关系数据类型:是用原创 2017-04-08 10:08:43 · 3394 阅读 · 1 评论 -
数据结构——栈之顺序存储
数据结构——栈之顺序存储 栈的顺序存储可以用数组描述,增加一个变量top存储栈顶元素在数组中的下标,下面是基本操作的实现代码:原创 2017-04-12 09:22:00 · 353 阅读 · 0 评论 -
数据结构——栈之链式存储
数据结构——栈之链式存储 跟链表结构一样,只是多了条限制:只能从链表头插入和删除。源码:#include #include #include #include /**栈的链式存储**/typedef struct Data{ char name[10]; int age;};typedef struct Stack{ Data da原创 2017-04-12 13:21:42 · 363 阅读 · 0 评论 -
数据结构——队列之链式存储
数据结构——队列之链式存储 队列的链式存储道理跟线性表一样,但是需要另外设定两个指针,一个指向队首、一个指向队尾:#include #include #include #include /**队列的链式存储**/typedef struct Data{ char name[10]; int age;};typedef struct Queu原创 2017-04-12 19:27:04 · 515 阅读 · 0 评论 -
数据结构——队列之顺序存储
数据结构——队列之顺序存储 用数组描述队列的顺序存储,需要两个变量用来标记队首和队尾元素的数组下标:#include #include #include #include /**队列的循环顺序存储**/#define Max_Size 2typedef struct Data{ char name[10]; int age;};typed原创 2017-04-12 20:25:27 · 448 阅读 · 0 评论 -
数据结构——栈和队列
数据结构——栈和队列1、栈 栈的概念 栈是一种特殊的线性表,具有和线性表的特点,同时也有特殊性:元素遵循“先进后出”的特点,也就是只能从栈顶插入或删除元素。同样可以用顺序存储和链式存储两种方式实现,分别称为顺序栈和链栈。栈结构可以用来实现表达式求值、括号匹配等。 栈的特点可以看成是一个桶,往桶里面装东西,取东西都是从上面进行的,最先放进原创 2017-04-11 20:15:24 · 663 阅读 · 0 评论 -
数据结构——二叉树的构建+四种遍历(递归、非递归)
二叉树的结构定义package com.kexin.common;/** * @Author KeXin * @Date 2019/4/4 上午10:51 **/public class TreeNode { char val; TreeNode left; TreeNode right; public TreeNode(char x) { ...原创 2019-04-09 15:24:25 · 344 阅读 · 0 评论