数据结构与算法
乱红飞
用技术追赶世界潮流,从人文历史把握人生方向。
展开
-
【DSA】图-深度优先和广度优先搜索(4)
以下介绍均已上图为依据,主要介绍无向图。1. 深度优先搜索深度优先,即从图中某一节A点开始访问,然后访问与之相连的一个节点C,再访问与C相邻的B节点。然后在随机选择一个未访问的节点比如说是F,则接下来按照F->G->E->H的顺序访问,最后访问D。2. 广度优先搜索广度优先,通从中一点A开始访问,接下来,访问所有与A相连的节点CDF,在访问与C相连的所有节点B,继续访问...原创 2019-11-11 19:05:50 · 167 阅读 · 0 评论 -
【DSA】图-邻接表实现图(3)
有关邻接表的含义已经在之前博文中说过了(图论基础)本章将使用邻接表创建graph,给出代码实现。为了更容易看清楚代码的实现,我这里将图论基础中的图直接复制过来。...原创 2019-11-05 16:57:10 · 184 阅读 · 0 评论 -
【DSA】图-邻接矩阵实现图(2)
以下代码实现了临接矩阵构造graph。代码实现了无向图的构造。原图如下:上图的邻接矩阵如下:/*/** * 邻接矩阵实现的map */#include <stdio.h>#include <stdlib.h>#include <malloc.h>#define IS_LETTER(c) ( (((c) >= 'a') &am...原创 2019-11-01 16:27:42 · 238 阅读 · 0 评论 -
【DSA】图-理论基础(1)
图的定义定义:图(graph)是由一些点(vertex)和这些点之间的连线(edge)所组成的;其中,点通常被成为"顶点(vertex)",而点与点之间的连线则被成为"边或弧"(edege)。通常记为,G=(V,E)。图的分类...原创 2019-10-23 20:08:11 · 500 阅读 · 0 评论 -
【DSA】堆-堆详解(以最大堆为例)
堆【定义】堆(Heap)是计算机科学中一类特殊的数据结构的统称。堆通常是一个可以被看做一棵完全二叉树的数组对象。【注意】这里讲的堆是一种数据结构,不是内存模型中堆的概念。【性质】堆中任意节点的值总是不大于(不小于)其子节点的值;堆总是一棵完全树。【说明】将根节点最大的堆叫做最大堆或大根堆,根节点最小的堆叫做最小堆或小根堆。常见的堆有二叉堆、斐波那契堆等。堆是非线性数据...原创 2019-10-15 15:43:31 · 442 阅读 · 0 评论 -
【DSA】树-哈弗曼树详解(3)
什么是哈弗曼树百度百科的定义给定N个权值作为N个叶子结点,构造一棵二叉树,若该树的带权路径长度达到最小,称这样的二叉树为最优二叉树,也称为哈夫曼树(Huffman Tree)。哈夫曼树是带权路径长度最短的树,权值较大的结点离根较近。哈弗曼树上述定义很学术,是很严谨的表达,但是看起来总不是那么好理解。在这里,我们不说理论,直接来看一颗哈弗曼树是如何构建的,通过具象事物来理解抽象的概念。...原创 2019-10-12 18:52:02 · 771 阅读 · 0 评论 -
【DSA】树-AVL树接口封装(2)
github项目地址:https://github.com/jobbofhe/Learning_Data_Structure_and_Algorithms/tree/master/c_cpp什么是AVL树?AVL树是根据它的发明者G.M. Adelson-Velsky和E.M. Landis命名的。AVL树的特点?它是最先发明的自平衡二叉查找树,也被称为高度平衡树。相比于"二叉查找树",它...原创 2019-09-30 15:04:45 · 207 阅读 · 0 评论 -
【DSA】树-二叉树接口封装(1)
github地址:https://github.com/jobbofhe/Learning_Data_Structure_and_Algorithms/** @Author: jobbofhe* @Date: 2019-07-29 20:08:30* @Last Modified by: Administrator* @Last Modified time: 2019-08-07...原创 2019-08-26 15:50:14 · 184 阅读 · 0 评论 -
【DSA】双链表实现队列(代码)
github地址:https://github.com/jobbofhe/Learning_Data_Structure_and_Algorithms/** @Author: jobbofhe* @Date: 2019-07-29 19:22:56* @Last Modified by: Administrator* @Last Modified time: 2019-07-29...原创 2019-08-22 11:56:26 · 268 阅读 · 0 评论 -
【DSA】双链表实现栈(代码)
github地址:https://github.com/jobbofhe/Learning_Data_Structure_and_Algorithms/** @Author: jobbofhe* @Date: 2019-07-26 17:23:47* @Last Modified by: Administrator* @Last Modified time: 2019-07-29...原创 2019-08-22 11:54:30 · 292 阅读 · 0 评论 -
【DSA】数组实现栈(代码)
/** * 数组实现栈 */#include <stdio.h>#include <malloc.h>static int count = 0;// 创建大小为 size 的栈int *create_array_stack(int size){ int *stack = (int *)malloc(sizeof(int)*size); ...原创 2019-08-22 11:52:32 · 128 阅读 · 0 评论 -
【DSA】双向链表(代码)
#include <stdio.h>#include <stdlib.h>typedef struct PEOPLE{ char *name; int age;}People;typedef struct Node_{ int value; struct Node_ *pre; struct Node_ *nex...原创 2019-08-22 11:51:33 · 160 阅读 · 0 评论 -
【DSA】单向链表(代码)
#include<stdio.h>#include<stdlib.h>#define datatype int struct NODE{ int num; datatype data; //存储数据 struct NODE *pNext;}; typedef struct NODE Node; //简写 //实现的功...原创 2019-08-22 11:49:41 · 176 阅读 · 0 评论 -
【DSA】递归及常见例子
/** * 递归 */#include <stdio.h>#include <stdlib.h>#include <string.h>#define TRUE (1)#define FALSE (0) typedef int Status;/** * -- 1. 递归的形象解释: * 就像俄罗斯套娃一样,...原创 2018-12-23 17:46:25 · 206 阅读 · 0 评论 -
【DSA】栈计算数学表达式
计算表达式 1+(3-5)*4+ 10/5 过程:原创 2018-12-22 18:44:51 · 347 阅读 · 0 评论 -
【DSA】双向链表(代码)
数据结构再复习。本文实现了双向链表的基本操作。/** * 双向链表 * 初始化链表 : A B C D E F G H I J K L M N O P Q R S T U V W X Y * 输入正整数4: E F G H I J K L M N O P Q R S T U V W X Y Z A B C D * 输入负整数-4:W X Y Z A B C D E F G H I J...原创 2018-12-22 17:53:48 · 185 阅读 · 0 评论 -
源代码——十字链表实现稀疏矩阵
十字链表图示:代码实现:#define _CRT_SECURE_NO_WARNINGS#include #include typedef struct Matrix_ELEMENT //稀疏矩阵成员,值 并指向下一个值{ int row; int col; int value; struct Matrix_ELEMENT *rowLink; struct原创 2016-09-05 19:16:39 · 1206 阅读 · 0 评论