zoukankan      html  css  js  c++  java
  • 数据结构基础

    数据是信息的载体,能被计算机识别,存储和加工处理

    数据元素是数据的基本单位,可由若干数据项组成,数据项是具有独立含义的最小标识单位。

    数据的存储结构:顺序存储,链接存储,索引存储,散列索引

    评价算法的质量:正确性,易读性,健壮性,高效率。

    算法的特征:有穷性,确定性,可行性,输入和输出。

    决定算法运行时间的因素:问题规模,编译时间,指令执行速度,重复执行指令的速度

    数据结构

    node *p=(node*)malloc(sizeof(node)); 分配地址

    free(p); 释放资源

    顺序表

    链表 prior data next

             typedef struct node

             {

                       datatype data,

                       struct node *next

             }*pNode;

    栈 注意溢出 是否为空栈 栈顶进出

             typedef struct stack

             {

                       pNode Top,

                       pNode Bottom

             }*Pstack;

    队列 是一种受限的线性表,允许删除的一端称为对首,允许插入的一端称队尾

             边界条件 為克服假上溢,i=(i+1)%queuesize

             解決方式,設置布尔变量区分队列满或空,少用一个元素,rear+1=front,使用计数器记录元素总数

             typedef struct Queue

             {

                       pNode rear,

                       pNode front,

                       int len,

                       int size

             }*pQueue;

    串 存储结构:顺序存储与链接存储

    多维数组

             特殊矩阵

             对称矩阵 转换为数据存储 n(n+1)/2  i(i+1)/2+j

             三角矩阵 n(n+1)/2+1 转换为数组时,分上下三角矩阵

                                上三角矩阵

                                下三角矩阵

             稀疏矩阵 压缩方式 三元表示法 (i,j,data) 行指针链表 十字链表

             树上任一结点拥有的子树数称为该结点的度

             树中的每个结点的子树不能变更其位置,称为有序树,反之称为无序树

             二叉树减枝

             二叉树性质:        

                       在二叉树的第i层最多有2(i-1) 个结点 2*0 2*1

                       二叉树中如果深度为K,那么最多具有2(k)-1 个结点

                       n0=n2+1 n0表示度数为0的结点 n2表示度数为2的结点

                       完全二叉树中,具有n个节点的完全二叉树的深度为(log2n)+1 ,其中(log2n)+1是向下取整

                       如果有一颗有n个结点的完全二叉树的节点是按层次序编号的,对任一层的结点i(1<=i<=n)有

                                1.如果i=1,则节点是二叉树的根,无双亲,如果i>1,则其双亲节点为[i/2],向下取整

                                2.如果2i>n那么节点i没有左孩子,否则其左孩子为2i

                                3.如果2i+1>n那么节点没有右孩子,否则右孩子为2i+1

                       二叉树遍历 前序遍历 中序遍历 后续遍历 时间复杂度为O(0)

            typedef struct Treenode

             {

                       struct Treenode *lchild,

                       struct Treenode *rchild,

                       datatype data

             }*pTree;

             森林通常定义为树的集合

             树与二叉树的转换 1.所有的兄弟连线 2.保留与长子的连线,去除其他连线

             森林与二叉树的转换 1.将所有树转换成二叉树 2.将所有根节点连接

             森林的前序遍历等同前序遍历二叉树

             森林的后续遍历等同中序遍历二叉树

             路径:从树的一个结点到树的另一个结点之前的分支

             长度:路径上的分支数目

             结点的带权路径长度

             哈夫曼树

             字符集编码 前缀码

    图 G=(V,E) 有向图<V1,V2> 无向图(V1,V2)

             度 入度 出度

             n个顶点,有n(n-1)/2条边的无向图为无向完全图,有n(n-1)条边的有向图为有向完全图

             联通图:任意两个顶点都可及

             一个联通图的生成树,极小联通子图

             强联通图:有向图中任意两点都有路径,极大联通图称为强联通分量

             网:带权的图

             图的存储结构:

                       邻接矩阵表示法

                       邻接表表示法

             图的遍历:

                       深度优先

                       广度优先

             最小生成树:权值最小的生成树

                       普里姆:从顶点v0开始,选取权值最小的边(v0,v1)加入最终序列中,再从剩余集合中选取连接到最终集合权值最小的边,依次将所有顶点加入最终集合中

                       克鲁斯卡尔:选择最小权的边,加入最终集合T,再依次选择不联通最终集合最小权的边加入最终集合T,直到将所有顶点加入集合T中。

             AOV网:顶点表示活动,有向边表示活动的先后关系

             拓扑序列:AOV网中的所有顶点排成一个序列,使得每个活动的前驱活动都排在该活动的前面

             拓扑存储:以向量存储所有顶点,包含入度数,数据,弧尾指针        

             拓扑排序:从AOV网中选择一个入度为0 的顶点输出,让后删除此顶点,并删除以此顶点为尾的弧;重复此操作,直到输出全部顶点或不存在入度为0的顶点为止。

  • 相关阅读:
    blocksit
    getdata
    ASP.net 探针
    301重定向
    webapi
    Unity NGUI UIPanel下对粒子的剪裁
    unity3d 之本地推送
    c#之时间戳与DateTime的相互转换
    c#之从服务器下载压缩包,并解压
    Unity3d 开发之 ulua 坑的总结
  • 原文地址:https://www.cnblogs.com/CoreXin/p/5337564.html
Copyright © 2011-2022 走看看