《数据结构》
文章平均质量分 55
朋友叫我小马
不断努力,顶端相遇!
展开
-
《数据结构》知识点Day_05
图的遍历深度优先搜索DFS广度优先搜索BFS深度优先搜索DFS图的深度优先遍历(Depth First Search)和树的先序遍历有一定相似之处。基本思想:假设初始状态是图中所有顶点均未被访问,则从某个顶点出发,首先访问该顶点,然后依次从它的各个未被访问的邻接点出发深度优先搜索遍历图,直至图中所有和 v 有路径相通的顶点都被访问到。若此时尚有其他顶点未被访问到,则另选一个未被访问的顶点作起始点,重复上述过程,直至图中所有顶点都被访问到为止。显然,深度优先搜索是一个递归地过程。广度优先搜索B原创 2021-08-27 10:53:18 · 105 阅读 · 0 评论 -
《数据结构》知识点Day_05
图图是由一些点vertex和这些点之间的连线边edge组成,通常记作:G = (V, E)。根据图是否有方向,可以将图划分为:无向图和有向图。无向图:无向图的边都是不区分方向的。有向图:不同于无向图,它的所有的边都是有方向的。邻接点和边一条边上的两个顶点叫做邻接点。出边:指的是以该顶点为起点的边。入边:指的是以该顶点为终点的边。在无向图中,某个顶点的度是邻接到该顶点的边或数目。在有向图中,度还有出度和入度之分。度入度:指的是以该顶点为终点的变的数目。出度:指的是以该顶点为起点的边的原创 2021-08-26 00:01:34 · 1255 阅读 · 0 评论 -
《数据结构》知识点Day_04
树和二叉树树:是N(N≥0)个结点的有限集合,N=0时,称为空树,这是一种特殊情况。树的定义是递归的,是一种递归的数据结构。树作为一种逻辑结构,同时也是一种分层结构,具有以下两个特点:树的根结点没有前驱结点,除根结点之外的所有结点有且仅有一个前驱结点。树中所有结点可以有零个或者多个后继结点。先(前)序遍历: 对访问到的每个结点,先访问根结点,然后是左结点,然后是右结点。中序遍历: 对访问到的每个结点,先访问左结点,然后是根结点,然后是右结点。后序遍历: 对访问到的每个结点,先原创 2021-08-21 23:42:47 · 95 阅读 · 0 评论 -
《数据结构》知识点Day_03
栈和队列栈队列栈栈(stack)是一种后进先出 (last infirst out)的线性表. 只能在表的一端(栈顶)进行插入和删除运算的线性表。栈(Stack):只允许在一端进行插入或删除操作的线性表。栈顶(Top): 线性表允许进行插入和删除的那一端栈底(Bottom): 固定的,不允许进行插入和删除操作的另一端。空栈:不含任何元素的空表。队列队列是一种先进先出(FIFO)的线性表. 在表一端插入,在另一端删除。循环队列的相关条件和公式:1.队空条件:rearfront2.队原创 2021-08-21 00:32:53 · 84 阅读 · 0 评论 -
《数据结构》知识点Day_02
线性表1.线性表的定义:存在唯一一个"第一个"元素存在唯一一个“最后一个”元素除第一个元素外,每一个元素都有且只有一个前驱除最后一个元素外,每个元素都有且只有一个后继2.优点:存储密度大(结点本身所占存储量/结点结构所占存储量)可以随机存取表中任一元素3.缺点:在插入、删除某一元素时,需要移动大量元素浪费存储空间属于静态存储形式,数据元素的个数不能自由扩充单链表链式存储结构(链表)1.链表的基本概念各结点由两个域组成:数据域:存储元素数值数据指针域:存储直接后原创 2021-08-19 23:44:02 · 276 阅读 · 0 评论 -
数据结构-循环队列(C语言代码)
循环队列就是将队列存储空间的最后一个位置绕到第一个位置,形成逻辑上的环状空间,供队列循环使用。在循环队列结构中,当存储空间的最后一个位置已被使用而再要进入队运算时,只需要存储空间的第一个位置空闲,便可将元素加入到第一个位置,即将存储空间的第一个位置作为队尾。循环队列可以更简单防止伪溢出的发生,但队列大小是固定的。在循环队列中,当队列为空时,有front=rear,而当所有队列空间全占满时,也有front=rear。为了区别这两种情况,规定循环队列最多只能有MaxSize-1个队列元素,当循环队列中只剩.原创 2021-08-14 23:29:02 · 2040 阅读 · 0 评论 -
数据结构-队(C语言代码)
只允许在一端进行插入,在另一端进行删除的操作的线性表,又称为先进先出(First In First Out)线性表,简称FIFO队头:允许进行删除操作的一端队尾:允许进行插入操作的一端空队:不含任何数据元素的队#include <stdio.h>#include <stdlib.h>//定义队列typedef struct Node { int data; struct Node* next;}Node;//初始化队列Node* initQuee.原创 2021-08-13 14:10:08 · 407 阅读 · 0 评论 -
数据结构-栈(C语言代码)
栈(stack)又名堆栈,它是一种运算受限的线性表。限定仅在表尾进行插入和删除操作的线性表。这一端被称为栈顶,相对地,把另一端称为栈底。向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称作出栈或退栈,它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素。#include <stdio.h>#include <stdlib.h>typedef struct Node { int data; struct.原创 2021-08-12 20:15:19 · 5466 阅读 · 0 评论 -
数据结构-双链表和双循环链表(C语言代码)
双链表和双循环链表单链表双循环链表单链表单向链表特点: 1.可以轻松的到达下一个节点, 但是回到前一个节点是很难的. 2.只能从头遍历到尾或者从尾遍历到头(一般从头到尾)双向链表特点 1.每次在插入或删除某个节点时, 需要处理四个节点的引用, 而不是两个. 实现起来要困难一些 2.相对于单向链表, 必然占用内存空间更大一些. 3.既可以从头遍历到尾, 又可以从尾遍历到头双向链表的定义: 双向链表也叫双链表,是链表的一种,它的每个数据结点中都有两个指针,分别指向直接后继和直接原创 2021-08-10 00:38:50 · 372 阅读 · 0 评论 -
数据结构-单循环链表(C语言代码)
数据结构纯属新手,小白一枚,欢迎批评指正!下面这个图是接下来要实现的单循环链表!直接上代码OVO!定义结构体typedef struct Node { int data; //数据域 struct Node* next; //指针域}Node;单循环链表跟单链表类似只有数据域和指向下一个结点的指针域,不过尾结点的指针域指向第一个结点。创建链表//创建单循环链表Node* initList() { Node* L = (Node*)malloc(sizeof(Node))原创 2021-08-06 00:24:17 · 1421 阅读 · 0 评论 -
数据结构-单链表(C语言代码)
数据结构纯属新手,小白一枚,欢迎批评指正!直接上代码OVO!定义结构体typedef struct Node { int data; //数据域 struct Node* next; //指针域}Node;单链表只有数据域和指向下一个结点的指针域。创建链表//创建链表Node* initList() { Node* L = (Node*)malloc(sizeof(Node)); //创建头指针 L->data = 0; L->next = NULL;//刚原创 2021-08-05 00:39:55 · 308 阅读 · 0 评论 -
八大排序算法(理论和动态图)
八大排序算法一、冒泡排序二、选择排序三、快速排序四、归并排序五、堆排序六、直接插入排序七、希尔排序八、基数排序排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或 递减的排列起来的操作。一、冒泡排序从第一个元素开始,每次比较相邻元素,如果元素顺序不正确,则进行交换,否则,比较下一对相邻元素。重复上述过程,直到所有元素都有序。冒泡排序每次都可以将一个最值排到队尾,像水里冒泡泡一样,大的先浮上来,所以叫冒泡排序。二、选择排序选择数组最小的元素,与数组第一个元素交换,然后选择剩余的原创 2021-08-01 16:37:40 · 320 阅读 · 0 评论 -
《数据结构》知识点Day_01
绪论基本概念数据(Data):客观事物的符号表示,所有能够输入计算中并被计算机处理的符号的总称。数据元素(Data Element):数据的基本单位,在计算机中作为一个整体进行考虑和处理。数据项(Data Item): 是组成数据元素的、有独立含义的、不可再分的最小单位。数据对象(Data Object): 是性质相同的数据元素的集合,是数据的子集。数据结构(Data Structure): 相互之间存在一种或特定多种关系的数据元素的集合。"结构"就是数据元素之间存在的关系。原创 2021-07-28 20:23:54 · 212 阅读 · 0 评论