数据结构和算法
yishizuofei
You got a dream,you gotla protect it. People can't do something tbemselves, they wanna tell you you can't do it. If you want something, go get it. Period 如果你有梦想的话,就要去捍卫它。当别人做不到的时候,他们就想要告诉你,你也不能。如果你想要些什么,就得去努力争取。就这样!
展开
-
数据结构基本概念总结
1、数据:是对客观事物的符号表示,在计算机科学中是指所有能输入到计算机中并被计算机程序处理的符号的总称。2、数据元素:是数据的基本单位,在计算机程序中通常作为一个整体进行考虑和处理。3、数据项:数据项是数据不可分割的最小单位,一个数据元素可以由若干个数据项组成。原创 2017-07-26 20:20:36 · 742 阅读 · 0 评论 -
一致性哈希(Consistent Hashing)
转自:https://blog.csdn.net/baidu_30000217/article/details/53671716 参考:https://www.cnblogs.com/color-my-life/p/5799903.html http://www.zsythink.net/archives/1182背景介绍一致性哈希算法在1997年由麻省理工学院提出的一种分布式哈希(D...转载 2018-08-11 22:53:52 · 355 阅读 · 0 评论 -
线性表链式存储结构的表示和实现
基本概念 1、线性表的顺序存储结构的缺点是插入和删除时需要移动大量元素,这会消耗大量时间,可以选择链式存储结构来解决这个问题。 2、链式存储结构的特点是用一组任意的存储单元存储线性表的数据元素,这组存储单元可以是连续的,也可以是不连续的。意味着,这些数据元素可以存储在内存中未被占用的任意位置。 3、在顺序存储结构中,每个数据元素只需存数据元素的信息,而链式存储结构中,除了原创 2017-08-10 14:22:57 · 1168 阅读 · 0 评论 -
线性表的顺序存储结构的表示和实现
线性表的顺序存储结构的表示和实现 1、线性表定义:零个或多个数据元素的有限序列。 首先,它是一个序列。也就是说,元素之间是有顺序的,若元素存在多个,则第一个元素无前驱,最后一个元素无后继,其他每个元素有且只有一个前驱和一个后继。然后,线性表强调是有限的,说的是元素个数是有限的。 2、线性表元素的个数n(n≥0)定义为线性表的长度,当n=0时,称为空表。 3、线性表的...原创 2017-08-01 21:06:28 · 949 阅读 · 0 评论 -
二叉树的遍历(递归、非递归)
二叉树遍历的基本概念1、二叉树遍历原理:二叉树的遍历是指从根结点出发,按照某种次序依次访问所有结点,使得每个结点被访问一次且仅被访问一次。 2、二叉树遍历方法: (1)前序遍历:若二叉树为空,则空操作返回,否则先访问根结点,然后前序遍历左子树,再前序遍历右子树。 (2)中序遍历:若树为空,则空操作返回,否则从根结点开始,中序遍历根结点的左子树,然后是访问根结点,最后中序遍历右子树。 (原创 2017-09-23 17:17:08 · 852 阅读 · 1 评论 -
二叉树的基本概念、存储结构、和创建方法
一、二叉树的基本概念1、二叉树的定义二叉树是n(n>=0)个结点的有限集合,该集合或者为空集(称为空二叉树),或者由一个根结点和两棵互不相交的、分别称为根结点的左子树和右子树组成。2、二叉树的特点(1)每个二叉树最多有两棵子树,所以二叉树中不存在度大于2的结点。(2)左子树和右子树是有顺序的,次序不能任意颠倒。(3)即使树中某结点只有一颗子树,也要区分它是左子树还是右子树。原创 2017-09-22 18:55:33 · 615 阅读 · 0 评论 -
中序线索二叉树的创建、线索化和遍历(前序遍历和后序遍历)
线索二叉树的概念线索二叉树的原理 线索二叉树是将普通二叉树左右孩子中的空链域利用起来,将左孩子空链域指向当前节点的线性遍历前驱,将右孩子空链域指向当前节点的线性遍历后继,指向该线性序列中的前驱或后继被称为“线索”。由于在线索链表中添加了遍历中得到的“前驱”和“后继”的信息,从而简化了遍历的算法。线索二叉树的结构typedef char ElemType;typedef enum{L原创 2017-10-04 15:57:40 · 3007 阅读 · 1 评论 -
栈的顺序存储和链式存储
栈的基本概念 1.定义:栈是限定在表尾进行插入和删除操作的线性表。 **注意**:首先它是一个线性表,也就是说,栈元素之间具有线性关系,即前驱后继关系。只不过它是一个受限的线性表,它的特殊之处在于限制了这个线性表的插入和删除的位置,它始终只在栈顶进行,栈底是固定的,最先进入栈的元素只能放在栈底。 2.允许插入和删除元素的一端称为栈顶,另一端称为栈底,不含任何数据元素的栈称为空栈原创 2017-08-10 18:51:02 · 517 阅读 · 0 评论 -
队列的顺序存储和链式存储
队列的基本概念 1.定义:队列是只允许在一端进行插入操作,而在另一端进行删除操作的线性表。 2.队列是一种先进先出的线性表,简称FIFO。允许插入的一端称为队尾,允许删除的一端称为队头。front指针指向对头元素,rear指针指向队尾的下一个位置。当front==rear时,为空队列。队列的顺序存储(循环队列)如图所示为队列的顺序存储: 假设这个队列的总个数不超过5个,但目原创 2017-08-10 19:01:12 · 3135 阅读 · 0 评论 -
常用的内排序算法的描述和实现
常用的内排序算法原创 2017-08-09 17:02:05 · 473 阅读 · 0 评论 -
字符串模式匹配算法
1、朴素的模式匹配算法:用两个指针(数组角标)分别指向主串和子串,当字符相等时,指针(角标)都加一,否则,都退回到适当的位置,直到找到子串在主串中出现的位置为止。//返回子串t在主串s中第pos个位置的字符开始之后的位置,若不存在,则函数值返回-1// 0<=pos<=strlen(s)-1int index(char *s,char *t,int pos){ int len1 = s原创 2017-08-09 20:52:31 · 1026 阅读 · 0 评论 -
串的表示和实现
串:串是由零个或多个字符组成的有限序列,又名叫字符串。 串的顺序存储结构:用一组地址连续的存储单元来存储串中的字符序列。规定在串值后面加一个不计入串长度的结束标记字符,为’\0’。 串的表示和实现如下:"mystring.h"#pragma once#define MAXSIZE 100typedef struct { char str[MAXSIZE];}string;//生成原创 2017-08-09 20:05:07 · 1635 阅读 · 0 评论 -
算法和算法分析总结
算法和算法分析总结算法:是对特定问题求解步骤的一种描述,是指令的有限序列,其中每一条指令表示一个或多个操作。算法的5个特性:(1)有穷性:一个算法总是(对于任何合法的输入值)在执行有穷步之后结束,且每一步都可在有穷时间内完成。(有穷性指合理的、可接受的)(2)确定性:算法中每一条指令必须有确切的含义,读者理解时不会产生二义性。并且,在任何条件下,算法只有唯一的一条执行路径,即对原创 2017-07-26 22:01:15 · 2555 阅读 · 0 评论 -
用链栈实现字符串表达式括号匹配算法
用栈、字符串、if语句实现括号的匹配算法原创 2017-07-29 19:27:51 · 4100 阅读 · 2 评论 -
A*寻路算法
理解A寻路算法具体过程 https://www.cnblogs.com/technology/archive/2011/05/26/2058842.htmlA算法(附c源码)https://www.cnblogs.com/mingbujian/p/4915546.htmlA*算法详解 https://blog.csdn.net/qq_36946274/article/details/81982...原创 2019-07-22 11:19:30 · 357 阅读 · 0 评论