![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
文章平均质量分 79
tulensa
苦逼的 Android开发工程师
展开
-
数据结构之线性表【1】
线性表一般分为顺序表和链表,本篇是对顺序表的回顾,以C++创建简单学生健康管理系统为例。顺序表是线性表基于数组的存储表示。其定义是:将线性表中的所有项,根据其逻辑顺序(有序或无序皆可),依次存储到一片连续的空间里面,空间的开始位置会被指定好(一般实际起始位置在运行时分配)。1.顺序表节点的结构体定义:struct student{public: int node; string原创 2018-01-25 10:58:41 · 278 阅读 · 1 评论 -
数据结构之图的最小生成树【2】
这篇文章接上一篇最小生成树的文章,上一篇的代码是Kruskal算法,这一篇是Prim算法,顺便复习了一下优先级队列。只要记住树是一种1对多的结构,储存的最好方法是储存每个节点的父节点(用数组的储存的话)就行。参考文章:http://blog.csdn.net/tham_/article/details/46048907代码:struct Matrix{ int iVexNum; int iE...原创 2018-03-01 11:29:33 · 225 阅读 · 0 评论 -
数据结构之图的最小生成树【1】
这篇文章的内容,是看了一篇讲最小生成树两种经典算法的文章后,我自己敲的代码和感想。主要的内容在注释上,写成博客方便之后查看,或者是利用。参考文章:http://blog.csdn.net/qjzl2008/article/details/8008077代码:#include "stdafx.h"#include <iostream>using namespace std;str...原创 2018-02-28 16:01:02 · 363 阅读 · 0 评论 -
【算法复习】图的最小生成树(Prim&Kruskal)
前言图的最小生成树算法主要有两种,Prim算法和Kruskal算法。实质上,这两种算法的思想都不难理解,但是在实际编程中,很容易将数据结构弄的过于复杂,增加无谓的开销。下面的文章是我这次回过头来整理的时候,看见的构造算是比较巧妙的一篇(主要是kruskal算法的实现部分),虽然有些地方我感觉有点冗余,但总体来说是值得学习的。原文地址http://blog.csdn.net/qjzl2008/art...转载 2018-02-28 15:53:39 · 966 阅读 · 0 评论 -
数据结构之图的遍历【1】
前言:图和树一样都是一种非线性结构。和前面的另外两种数据结构线性表和树相比,图是一种更加灵活,更加多变(可以具有的统一性质更少了)的数据结构。线性表是一对一的线性结构,树是一对多的非线性结构,而图则是任意数据节点间,多对多的非线性结构,它的每一个节点都可以与其他任意多个节点相关联。灵活性使得图可以用来描述、求解我们实际生活中的问题,同时也使得我们使用它的难度加大了。一、图的存储表示方法1. 以邻接...原创 2018-02-27 17:35:44 · 255 阅读 · 0 评论 -
数据结构之二叉树【2】【转载】
前言:二叉树搜索树是二叉树的一个重要应用,但是当二叉树的左右高度差很大时,那么无论是查找、插入还是删除二叉树中的节点,最坏情况的时间复杂度都会大大增加,所以就有了平衡二叉树(AVL树)的概念。但是维持树的完美平衡,代价又太高了,因此就又有了红黑树。红黑树的概念相对比较复杂,而且插入或者删除某个节点时,要考虑的情况也比较多。下面这篇文章是写得比较好的。原文地址:http://blog.c转载 2018-01-28 15:31:37 · 165 阅读 · 0 评论 -
数据结构之二叉树【1】
前言: 二叉树是一种特别的树结构,它的每个节点只能有两个孩子节点(最多),分别称作它的左子树和右子树(次序不能颠倒)。二叉树是最基本的数据结构之一,本篇主要讲的是它的基础应用:分别用递归和非递归实现3种遍历,哈夫曼树。 1.二叉树的储存结构 (1)使用顺序存储结构(数组)实现。这种方式就是将二叉树的节点储存在一个一维数组中。但是又不能随意存储,必须要保 留二叉树的逻辑结构,...原创 2018-01-27 12:09:12 · 259 阅读 · 0 评论 -
数据结构之栈(中缀转后缀计算四则运算)
前面转载了一篇有关栈的基础讲解的文章,所以这篇文章就不再说有关栈的概念性内容了。这篇文章主要的内容,就是用学到的栈的基础操作,来实现一个输入中缀四则运算表达式(+ - * /),转换成后缀表达式,然后计算结果并输出的小程序。表达式中可以有括号,操作数可以是多位整数(不支持小数,不过要修改也很容易)。中缀转后缀方法:1.遇到操作数,直接输出;2.栈为空时,遇到运算符,入栈;3.遇到左括号,将其入...原创 2018-01-26 12:02:22 · 733 阅读 · 0 评论 -
数据结构之栈【转载】
前言:这一系列文章都只是我记录再次回顾数据结构时的收获而写。栈这一篇本来打算写一篇基础,一篇栈计算四则运算的应用,但是之前学栈的时候,看过下面这篇文章,写得很好很详细,图文结合,一目了然。所以栈的基础介绍我就直接转载了他的。原文地址:http://www.cnblogs.com/QG-whz/p/5170418.html1. 栈的简介1.1栈的特点栈(Stack)是转载 2018-01-26 09:47:39 · 173 阅读 · 0 评论 -
数据结构之线性表【2】
线性表一般分为顺序表和链表,本篇是对链表的回顾,以C++创建简单(带头结点)递增单链表,实现插入和逆置功能为例。链表的形式有很多种,其中最简单、最基础的是单链表 。其他诸如循环链表、双向链表、双向循环链表等,应该算是基于单链表的变形,个人认为其本质也还是单链表。单链表用来表示线性表时,其定义是:一个存储节点分为数据域(data)和指针域(link)两部分,数据域用于储存线性表的一个数据元素(其实也...原创 2018-01-25 14:05:52 · 175 阅读 · 0 评论 -
数据结构之图的最短路径(Dijkstra & Floyd)【1】
前言计算图的最短路径,比较常见的算法有两种,一种是计算单源最短路径的Dijkstra算法,一种是计算任意两个点对最短路径的Floyd算法。这篇文章中主要的内容是Dijkstra算法的原理和实现。一、原理1.算法特点: 个人认为,Dijkstra算法的原理其实就是广度优先搜索,即逐步查找整张图,不管输入节点的位置情况,最后得到的也是所有点到源点的最小路径情况。2.算法描述: ...原创 2018-03-01 17:00:17 · 2545 阅读 · 3 评论