
数据结构
zjq_smile
这个作者很懒,什么都没留下…
展开
-
【数据结构与算法】统治世界的十大算法
统治世界的十大算法 前言 软件正在统治世界.而软件的核心则是算法.算法千千万,又有哪些算法属于”皇冠的珍珠”呢? 什么是算法 通俗的说,算法是一个定义明确的计算过程,可以一些值或一组值作为输入并产生一些值或一组值作为输出.因此算法就是将输入转换为输出的一系列计算步骤. 简而言之,算法转载 2016-11-04 22:18:32 · 1926 阅读 · 0 评论 -
基于栈的非递归方法实现二叉树
#include<iostream>#include<vector>#include<stdlib.h>using namespace std;struct BiNode{ char data; struct BiNode *left; struct BiNode *right;};typedef struct BiNode Node;typedef Node* Li原创 2017-07-18 23:46:34 · 500 阅读 · 1 评论 -
图的深度优先遍历(递归、非递归;邻接表,邻接矩阵)
众所周知,图有经典的两种遍历方式:深度优先遍历和广度优先遍历 首先我们就来说说深度优先遍历,其他的不说了,直接上代码,分为递归个非递归的方式啊首先是递归的方式实现的,比较简单,考虑到存储结构由邻接矩阵和邻接表,有分为两种:一种是邻接矩阵存储的递归,简单点说就是用数组来存储;另一种是邻接表存储的,也就是说用链表的方式存储的一、递归 1、邻接矩阵:#include<stdio.h>#define原创 2017-07-23 19:59:55 · 25332 阅读 · 9 评论 -
有两个双向循环链表A,B,知道其头指针为:pHeadA,pHeadB,请写一函数将两链表中data值相同的结点删除
有双向循环链表结点定义为: struct node { int data; struct node *front,*next; }; 有两个双向循环链表A,B,知道其头指针为:pHeadA,pHeadB,请写一函数将两链表中data值相同的结点删除 BOOL DeteleNode(Node *pHeader, DataType Value) { if (pHeader == N转载 2017-08-02 12:46:35 · 1152 阅读 · 0 评论 -
广度(宽度)优先搜索:队列
上一章详细的写出了深度优先遍历的四种情况的程序: http://blog.youkuaiyun.com/zscfa/article/details/75947816这一次来详细说说广度优先遍历: 广度优先搜索类似于二叉树的层序遍历,它的基本思想就是:首先访问起始顶点v,接着由v出发,依次访问v的各个未访问过的邻接顶点w1,w2,…,wi,然后再依次访问w1,w2,…,wi的所有未被访问过的邻接顶点;再从这些原创 2017-07-25 00:37:56 · 1233 阅读 · 0 评论 -
最小生成树——普利姆算法(prim)
这是摘抄自《大话数据结构》中的一句话,其实我是没看懂,但是看了代码,加上百度了之后,普利姆算法的步骤: 1、先假设之后一个节点,并同时把这些顶点的权值放在一个数组里,还有创建一个数组保存最小权值顶点的下标,找到这个节点边上的最小权值,这边的另一个节点为K 2、从节点K开始,再次寻找,把与k有关的权值放在一个数组里,若是比数组的值小就修改,同时修改下标的值,否则不改 3、重复2的步骤好吧,我也不原创 2017-07-25 13:09:24 · 1648 阅读 · 0 评论 -
Dijkstra算法(单源最短路径)
Dijkstra算法(单源最短路径) Dijkstra算法(单源最短路径) 单源最短路径问题,即在图中求出给定顶点到其它任一顶点的最短路径。在弄清楚如何求算单源最短路径问题之前,必须弄清楚最短路径的最优子结构性质。一.最短路径的最优子结构性质 该转载 2017-07-26 10:06:15 · 473 阅读 · 0 评论 -
只有五行的Floyd最短路径算法
我们来想一想,根据我们以往的经验,如果要让任意两点(例如从顶点a点到顶点b)之间的路程变短,只能引入第三个点(顶点k),并通过这个顶点k中转即a->k->b,才可能缩短原来从顶点a点到顶点b的路程。那么这个中转的顶点k是1~n中的哪个点呢?甚至有时候不只通过一个点,而是经过两个点或者更多点中转会更短,即a->k1->k2b->或者a->k1->k2…->k->i…->b。比如上图中从4号城市到3号转载 2017-07-26 10:24:02 · 484 阅读 · 0 评论 -
二叉排序树
二叉排序树或者是空树,或者是具有系列性质的二叉树: 若它的左子树不为空,则左子树上所有节点的值均小于他的根结点的值 若它的右子树不空,则右子树所有结点的值均大 于它的根节点 它的左右子数也分别为二叉排序树 目的:提高查找和插入删除关键字的速度#include <stdio.h>#include <stdlib.h>#define FALSE 0#define TRUE 1//二叉原创 2017-07-27 11:18:16 · 339 阅读 · 0 评论 -
用链表实现二叉树的实现(递归)
/*链表的递归方法实现二叉树*/#include<stdio.h>#include<stdlib.h>#include<string.h>struct BiNode{ char data; struct BiNode *lchild; struct BiNode *rchild;};typedef struct BiNode Node;typedef Node* L原创 2017-07-18 18:45:57 · 1181 阅读 · 0 评论 -
二叉树题目整理
二叉树节点定义struct BinaryTreeNode{ int m_nValue; BinaryTreeNode* m_pLeft; BinaryTreeNode* m_pRight;};1、求二叉树中的节点个数递归解法: (1)如果二叉树为空,节点个数为0 (2)如果二叉树不为空,二叉树节点个数 = 左子树节点个数 +转载 2016-12-02 23:07:12 · 301 阅读 · 0 评论 -
[数据结构]基本概念和术语
第一章 绪论1.1 什么是数据结构数据结构研究的主要内容: 数据结构是一门研究非数值计算的程序设计问题中计算机的操作对象以及它们之间的关系和操作等的学科。1.2 基本概念和术语·数据(data):所有能被输入到计算机中,且被计算机处理的符号的集合是计算机操作对 象的总称。·数据元素(data element)转载 2016-09-28 23:01:51 · 465 阅读 · 0 评论 -
[数据结构]抽象数据类型&算法
第一章 绪论1.3 抽象数据函数数据类型:一个值的集合和定义在这个值集上一组操作的总称。例:C语言中,提供int, char, float, double等基本数据类型,数组、结构体、共用体、枚举等构造数据类型,还有指针、空(void)类型等。用户也可用typedef自己定义数据类型typedef struct {转载 2016-09-29 19:41:37 · 2770 阅读 · 0 评论 -
【数据结构】线性表(一)
第二章 线性表主要内容: 1.线性表的类型定义 2.线性表的顺序表示和实现 3.线性表的链式表示和实现 学习提要: 1.了解线性表的逻辑结构和物理结构 2.掌握两种存储结构的描述方法以及在每种存储结构上的基本操作的实现 3.理解两种存储结构的特点及其使用场合 重难点内容: 顺序表、链转载 2016-10-02 00:09:16 · 1975 阅读 · 0 评论 -
【数据结构】线性表(二)
第二章 线性表2.3 线性表的链式存储结构一、单链表 用一组任意的存储单元存储线性表的数据元素。以元素(数据元素的映象) + 指针(指示后继元素存储位置) = 结点 (表示数据元素 或 数据元素的映象) 以线性表中第一个数据元素 的存储地址作为转载 2016-10-02 00:11:34 · 454 阅读 · 0 评论 -
[数据结构]串
第四章 串学习提要: 1.熟悉串的基本操作的定义,并能利用这些基本操作来实现串的其它各种操作的方法。 2.熟练掌握在串的定长顺序存储结构上实现串的各种操作的方法。 3.掌握串的堆分配存储结构以及在其上实现串操作的基本方法。 4.了解串的块链存储结构。重难点内容: 串的存储结构 4.1 串类型的定义基本概念转载 2016-10-03 22:24:03 · 1816 阅读 · 0 评论 -
【数据结构】数组和广义表
第五章 数组和广义表5.1 数组的类型定义ADT Array { 数据对象: D={aj1,j2, ...,,ji,jn| ji =0,...,bi -1, i=1,2,..,n } 数据关系: R={R1, R2, ..., Rn} Ri={ | 0 £ jk £ bk -1, 1 £原创 2016-10-04 21:19:29 · 1863 阅读 · 0 评论 -
[数据结构]树和二叉树
第六章 树和二叉树6.1树的类型定义数据对象 D:D是具有相同特性的数据元素的集合。数据关系 R:若D为空集,则称为空树 。否则: (1) 在D中存在唯一的称为根的数据元素root; (2) 当n>1时,其余结点可分为m (m>0)个互不相交的有限集T1, T2, …, Tm,其中每一棵 子集本身又是一棵符合本定义的树,称为根root的子转载 2016-10-05 22:37:49 · 940 阅读 · 0 评论 -
【数据结构】树和二叉树(下)
6.5线索二叉树一、何谓线索二叉树?遍历二叉树的结果是,求得结点的一个线性序列。例如:先序序列: A B C D E F G H K中序序列: B D C A H G K F E后序序列: D C B H K G F E A 指向该线性序列中的“前驱”和“后继” 的指针,称作“线索”·包含 “线索” 的存储结构,称作转载 2016-10-07 00:06:56 · 738 阅读 · 0 评论 -
平衡二叉树
#include <stdio.h>#include <stdlib.h>#include <stdbool.h>#include <string.h>#define LH 1 //left high#define EH 0 //equal high#define RH -1 //right high#define TRUE 1#define FALSE 0typedef struct原创 2017-07-27 19:32:49 · 308 阅读 · 0 评论