
数据结构
文章平均质量分 70
IT_xiaoye
这个作者很懒,什么都没留下…
展开
-
数据结构---静态顺序表
简单静态顺序表实现本篇全部代码都在Linux系统下完成概念:用一段地址连续的单元依次存储数据元素的线性结构,顺序表又分为静态顺序表和动态顺序表功能:初始化顺序表在表尾插入数据在表头插入数据删除表尾数据删除表头数据读取任意位置元素修改任意位置元素查找指定元素值的下标在表中任意位置插入元素首先创建一个结构体Seqlist,在结构体中我们定义了一个...原创 2018-03-13 19:57:09 · 474 阅读 · 0 评论 -
数据结构---还原一个二叉树
要求给出一个二叉树前序的遍历结果(数组),结果中包含有空结点(空结点用’#’表示),还原这个二叉树。给出一个二叉树前序和中序的遍历结果,不包含空结点,还原这个二叉树。思考1.给出带有空结点的前序遍历结果还原二叉树我们用递归的方法实现实现//@brief 根据先序遍历结果(带有空字符标记)// ...原创 2018-05-15 18:50:59 · 1199 阅读 · 0 评论 -
数据结构---二叉树的基本操作
何为二叉树概念:一棵二叉树是结点的一个有限集合,该集合或者为空,或者是由一个根节点加上两棵分别称为左子树和右子树的二叉树组成特点:每个结点最多有两棵子树二叉树的子树有左右之分,其子树的次序不能颠倒基本操作介绍二叉树的遍历(递归和非递归),可以说是所有操作中最重要的求树的结点个数求树的叶子结点的个数求第K层结点的个数求树的高度在树中查找指定元素给定一个结点,查...原创 2018-05-14 18:45:16 · 1774 阅读 · 0 评论 -
数据结构---C语言简单实现哈希表
当你看这篇的时候我认为你已经懂得哈希表的基本原理和一些具体方法实现了,如果你是想清晰的理解哈希表原理,点这个哈希表(散列表)原理详解闭散列我们往哈希表中插入数据时往往会发生哈希冲突,即两个不一样的 key 通过散列函数求出的下标 offset 是一样的,这时候就要给后插入的数据重新找位置,就诞生了两种形式,闭散列和开散列闭散列又称线性探测,即如果当前往哈希表中插入数据产生哈希冲突,...原创 2018-05-20 11:35:24 · 4216 阅读 · 3 评论 -
数据结构--哈希表(散列表)原理
介绍哈希表(Hash table,也叫散列表),是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表。记录的存储位置=f(关键字)这里的对应关系f称为散列函数,又称为哈希(Hash函数),采用散列技术将记录存储在一块连续的存储空间中,这块连续存储空间...转载 2018-05-20 09:50:41 · 776 阅读 · 0 评论 -
数据结构---链式队列实现
顾名思义,链式队列就是用链表的形式实现。与顺序队列的区别就是避免了空间溢出的问题。还有就是顺序队列基本操作的空间复杂度都是O(1),而链式队列中插入操作的时间复杂度为O(n),因为要通过尾插和头删或头插和尾删来实现先进后出的规则。结构体声明typedef char LinkListType;typedef struct LinkListQueue{ LinkListT...原创 2018-05-12 23:41:11 · 302 阅读 · 0 评论 -
数据结构---顺序队列实现
队列即为只允许在一端进行插入数据队列,在另一端进行删除数据操作的特殊线性表。但也有一些例外,如优先级队列。队列具有先进先出的特性,即最先进入队列的元素将被最先出队列有时也需要把进入队列中的元素分优先级(比如线程调度),出队列时首先选择优先级最高的元素出队列,对于优先级相同的元素则按照先进先出的原则出队列基本操作同栈类似,具体注意的点我就在代码中细说了结构体声明typed...原创 2018-05-12 22:08:07 · 489 阅读 · 0 评论 -
数据结构---链式栈实现
链式栈,顾名思义,就是规定一个只能头插头删或者尾插尾删的链表,来实现栈结构先进先出原则在这里我们选用头插和头删的方法,因为尾插和尾删都需要遍历链表,时间复杂度较高。不多比比,直接通过代码演示结构体定义typedef char LinkListType;typedef struct LinkListStack{ struct LinkListStack* next;/...原创 2018-05-12 21:36:04 · 853 阅读 · 0 评论 -
数据结构---动态顺序栈实现
栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除操作,进行数据插入和删除操作的一端被称为栈顶,另一端称为栈底。不含任何元素的栈称为空栈,内存中的“栈区”也是通过这样的栈结构实现的,即通常所说的数据先进先出动态顺序栈我们通过一个简单的数组来进行数据的存储,我们规定只能从数组的尾部插入与删除数据,这样就实现了一个简易的栈结构,静态数组实现的栈是由存储上限的,数组存储满元素后,就不能...原创 2018-05-12 21:22:54 · 832 阅读 · 0 评论 -
数据结构---二叉搜索树基本操作(插入,删除,查找)
介绍二叉搜索树,也称有序二叉树,排序二叉树,是指一棵空树或者具有下列性质的二叉树:若任意节点的左子树不空,则左子树上所有结点的值均小于它的根结点的值;若任意节点的右子树不空,则右子树上所有结点的值均大于它的根结点的值;任意节点的左、右子树也分别为二叉查找树。没有键值相等的节点。插入拿到插入的元素,从根节点开始遍历二叉树,如果小于当前结点的值,就移动到当前结点的左...原创 2018-05-17 13:54:54 · 429 阅读 · 0 评论 -
数据结构---单链表基本操作实现
单链表基本操作(不带头结点)链表概念:一种链式存储的线性表,用一组地址任意的存储单元存放线性表的数据元素,称存储单元为一节点具体操作概述尾插一个元素尾删一个元素头插一个元素头删一个元素查找元素在链表中的位置,并且返回该节点的地址在指定位置(pos)前插入元素在指定位置(pos)后插入元素删除指定位置元素删除指定值的元素指定值的所有元素都删除求链表的元素...原创 2018-03-23 13:54:18 · 789 阅读 · 0 评论 -
数据结构---堆的基本操作及堆排序
介绍首先我们要将数据结构中的堆和内存中的堆区区分开来,内存中的堆区是操作系统管理的,和数据结构中的堆没有半毛钱关系。堆只有两种,大堆和小堆。大堆(大根堆):父节点的值大于左右孩子结点的值,也就是说大堆的根节点是整个堆中的最大值,左右孩子结点的值毫无关系小堆(小根堆):父节点的值小于左右孩子结点的值,也就是说小堆的根节点是整个堆中的最小值,左右孩子结点的值毫无关系堆的表示我...原创 2018-05-15 20:17:55 · 541 阅读 · 0 评论