数据结构
@make great efforts
这个作者很懒,什么都没留下…
展开
-
静态数组实现的顺序表(C语言实现)
在写顺序表之前我们先来了解下相关的一些知识,以便我们后期能够写出更好的东西。数据结构是相互之间存在一种或多种特定关系的数据元素的集合。根据数据元素之间关系的不同特性,通常有如下种基本结构:集合:结构中的元素之间除了“同属于一个集合”的关系外,别无其他的关系。如:广义表。线性结构:结构中的数据元素之间存在着一个对一个的关系。如:链表。树形结构:结构中的数据元素之间存在着一个对多个的关系。如二叉树。图...原创 2018-03-17 21:15:36 · 1846 阅读 · 1 评论 -
【数据结构】哈希表的基本操作(一)·线性探测法解决哈希冲突
今天我们主要的是用线性探测的方法处理哈希冲突的问题。 线性探测方法的具体实现如下:test.h#pragma once#include <stdio.h>#include <stddef.h>#include <stdlib.h>//我们在这里的hash表期望存储的数据是键值对这样的结构#define HashMaxSize 1000...原创 2018-05-23 12:56:17 · 4514 阅读 · 1 评论 -
数据结构------哈希表解析
哈希表的概念用我自己的话来说,就是当给你一组数字在【0,100),再给你一个数字,我们要判断数字是否存在于数组中,我们的主要实现的方法就是定义一个有100元素的数组,然后我们根据给定的数字,把给定的一组数字当成数组的下标,当我们依次第一个数字放入数组中时下标为该数字本身,而这个下标对应的数字为1,依次往后,把给定的数字全部放入数组中,有些数字不在我们给定的范围之内我们就记为0,然后将所有的数字...原创 2018-05-22 15:49:55 · 252 阅读 · 0 评论 -
【数据结构】哈希表的基本操作(二)·哈希桶处理哈希冲突
的原创 2018-05-25 17:09:09 · 611 阅读 · 0 评论 -
【数据结构】------多通路带环迷宫求最短路径(C语言)
思路:在解决之前的函数时,我们判断函数是否可以落脚,标记可落脚的函数都是通用的,而现在由于迷宫的通路是带环的,如果我们在使用上面提到的不带环的多通路求最短路径的方法,肯定这种结果是错误的,所以对于带环的迷宫求解我们再也不能像以前简单的标记为2,我们应该标记的是走过的步数,这样我们判断是否能落脚时,可以直接判断下一步的步数是否比我们即将标记的步数大,如果大的话,就继续进行落脚标记,否则就不可以。...原创 2018-04-28 23:37:06 · 672 阅读 · 0 评论 -
【数据结构】-------二叉树的四种遍历方法(递归实现)
二叉树的数据结构主要是了解二叉树的链表结构,也就是一个数据域,两个指针域(指向左右孩子的指针) 对于二叉树来说,我们最常用的就是使用孩子表示法来表示一个树。使用根节点指针来表示一棵树,利用空指针来表示空树。...原创 2018-05-10 21:20:32 · 609 阅读 · 0 评论 -
【数据结构】--------二叉树的基本知识点总结
一、树的定义树是一种数据结构,它是由n(n>=1)个有限的结点组成的具有层次关系的集合。 树具有的特点有: (1)每个结点有零个或多个子结点(2)没有父节点的结点称为根节点(3)每一个非根结点有且只有一个父节点(4)除了根结点外,每个子结点可以分为多个不相交的子树。树的基本术语有: 若一个结点有子树,那么该结点称为子树根的“双亲”,子树的根称为该结点的“孩子”。...原创 2018-05-04 10:06:00 · 854 阅读 · 0 评论 -
【数据结构】-------求多出口迷宫的最短路径
上面我们已经写过递归和非递归来实现求解迷宫的问题,今天我们就在递归的基础上实现多条通路,最短问题。 初始化最短路径地图 ///////////////////////////////////////////////////////////////多通路最短路径///////////////////////////////////////////////////////////////...原创 2018-04-20 22:45:39 · 592 阅读 · 0 评论 -
【数据结构】-----非递归实现迷宫问题
在上篇中,我们已经实现了用回溯法也就是递归的函数来实现迷宫问题,在我们学习的过程中,我们知道,非递归的实现就是采用的循环的方法。在前面相关的函数我已经写过了,在这里我就不进行例举了。 非递归实现的数据结构typedef struct Maze{ int map[ROW][COL];}Maze;typedef struct Point{ int row; int ...原创 2018-04-20 14:36:36 · 1178 阅读 · 0 评论 -
顺序栈的相关的实现
一、栈的基本概念 栈作为一种数据结构,是一种只能在一端进行插入和删除操作的特殊线性表。它按照先进后出的原则存储数据,先进入的数据被压入栈底,最后的数据在栈顶,需要读数据的时候从栈顶开始弹出数据(最后一个数据被第一个读出来)。栈具有记忆作用,对栈的插入与删除操作中,不需要改变栈底指针。 栈是允许在同一端进行插入和删除操作的特殊线性表。允许进行插入和删除操作的一端称为栈顶(top),另一...原创 2018-04-13 23:19:07 · 299 阅读 · 0 评论 -
带头结点带环的双向链表的实现
在写这个代码的实现之前我们先来了解下相关的知识。 首先,带头结点带环的双向链表的特点: 带头节点:创建一个结点表示空链表,这个节点就是头结点,并且头结点中的数据不具有实际的意义。但是我们一般不关心头结点中的元素,只起“带头”作用。双向要求每个结点中都有一个next指针指向下一个,一个prev指针指向下一个。 1、双向链表的数据结构双向的带头结点的带环的链表有三个成员,一个是数据,一个...原创 2018-04-13 14:05:14 · 237 阅读 · 0 评论 -
数据结构——链式队列的实现
认识链式队列利用数组实现了循环队列,这是静态的队列,缺点是需要预设大小,当队列满时,无法再插入新的数据,只有等队头的数据被取走以后才能往队列放入新的数据。还可以利用链表实现队列,这种方式动态创建节点需要的内存,当有新的数据节点要加入时,才去申请内存空间,不需要预设大小,整个队列需要的内存空间不需要连续,并且插入删除更容易实现。但是同时也带来存取速度慢的缺点,操作也比数组的方式更加复杂。...原创 2018-04-17 20:18:03 · 999 阅读 · 1 评论 -
【数据结构】------回溯法实现迷宫问题
我们先来了解下回溯法,什么是回溯法? 回溯法:对于一个包括有很多个结点,每个结点有若干个搜索分支的问题,把原问题分解为若干子问题求解的算法;当搜索到某个结点发现无法再继续搜索下去,就让搜索过程(回溯)回退到该节点的前一个节点,继续搜索该节点外的其他尚未搜索的分支;如果发现该结点无法再继续进行搜索下去的时候,就让搜索过程回溯到这个结点的前一结点继续这样的搜索过程,这样的搜索过程一直进行到搜索...原创 2018-04-17 20:10:34 · 532 阅读 · 0 评论 -
单链表的实现
1、链表的相关概念 链表作为一种十分常见的数据结构,其应用范围也是极其广泛的,书上,网上我们能看到许多的链表程序,但是自己用着是不习惯的,并且很多地方可能不完善,所以通过自己来实现这个程序,链表是一种线性表,但是并不会按线性的链表是一种物理存储单元上非连续、非顺序表的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的,。链表由一系列结点(链表中的每个元素称为结点)组成,结点可以在运行时...原创 2018-03-28 16:57:51 · 278 阅读 · 0 评论 -
数据结构------单链表相关的面试题
1、从尾到头来打印单链表 在以前我们学习C语言的时候,我们都比较熟悉的就是逆序字符、汉诺塔、还有就是实现斐波那契数列的时候我们当时所用的方法就是递归,在这类问题的实现过,我们就对递归这个算法换是比较熟悉的,今天我们就来用递归的思想来实现从尾到头来打印链表。 那么我们刚开始拿到这个题的时候有点困惑,一时半会没想到解决的办法,最后才想到了递归这个方法。我最后得出逆序打印链表主要有三种做法: 1、...原创 2018-04-10 19:51:46 · 265 阅读 · 0 评论 -
数据结构——顺序队列
一、基本概念只允许在一端进行插入数据操作,在另一端进行删除数据操作的特殊线性表。进行插入的一端称为队尾(入队列),进行删除操作的一端称为称为队头(出队列),队列具有先进先出(FIFO)的特性。 队列的基本操作:初始化队列进队列出队列判断队列是否为空判断队列是否已满 队列可以由数组和链表两种形式实现队列的操作,分别称为顺序队列和链队列 顺序队列:顺序存储的队列 链队列:...原创 2018-04-15 08:45:02 · 1500 阅读 · 0 评论 -
基于链表实现栈
我们在链表的基础上实现栈,主要有以下操作入栈 - 出栈 - 取栈顶元素 - 初始化 - 销毁** 相关的代码实现的过程如下 1、数据结构 6 typedef char LinkStackType; 7 typedef struct LinkNode{ 8 LinkStackType data; 9 struct LinkNo...原创 2018-04-14 14:12:11 · 181 阅读 · 0 评论 -
静态顺序表的实现(2)
前面我已经写过一个静态顺序表的实现,今天我就来再实现一下这个静态顺序表,其中添加了一些新的东西。实现顺序表的以下操作 1、SeqListInit //给一个顺序表初始化,seq表示的是顺序表结构的指针。 2、SeqListPushBack // 将一个元素插入到顺序表的末尾 ; value 新插入的值。3、SeqListPopBack //将顺序表的最后一个元素删除 4、...原创 2018-03-24 12:03:59 · 172 阅读 · 0 评论 -
【数据结构】---------二叉树面试题(具体的所有实现)
实现二叉树的相关的操作:先序遍历树(递归)中序遍历树(递归)后序遍历树(递归) 层序遍历树 创建一棵树树的销毁树的拷贝二叉树中节点的个数 二叉树叶子节点的个数 二叉树第K层节点的个数 树的高度 在二叉树中查找节点 找当前节点的左子树 找当前节点的右子树 找当前节点的父节点 非递归完成先序遍历 非递归完成中序遍历 非递归完成后序遍历 二叉树的镜像 非递归完...原创 2018-06-09 23:57:29 · 201 阅读 · 0 评论