名称:树存储结构的几种表示方法
说明:对于树的存储结构,一般有以下三种表示方法。
总之,选用不同的存储结构要根据具体的用途。(这当然是废话)。想说的是,在做一些题的时候,如果可以不用选用二叉树这种相对复杂的存储结构,那就选择线性的结构。对我来说,线性结构比二维的树的结构用的顺手。
//树的存储结构之双亲表示法 //树的结点定义 typedef struct { int data; //数据元素 int parent; //双亲的位置 }PTNode; //树的类型定义 typedef struct { //PTNode nodes[MAXSIZE]; //双亲表示 int n; //结点数 }PTree; //树的存储结构之孩子表示法 //链表中孩子结点表示 typedef struct CHNode { int pos; //孩子的位置 CHNode *next; //指向下一个孩子的指针 }CHNode; //数组中双亲结点表示 typedef struct CHNode1 { int data; //数据元素 CHNode *firChild; //指向第一个孩子的指针 }CHNode1; //树的类型表示 typedef struct { CHNode1 nodes[MAXSIZE]; //所有的结点 int n; //节点的个数 }CHTree; //树的存储结构之孩子兄弟表示法 typedef struct CSNode { int data; //结点的数据 CSNode *firstchild,*nextbling; //第一个孩子和下一个兄弟 }CSNode,*CSTree;
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对小牛知识库的支持。如果你想了解更多相关内容请查看下面相关链接
主要内容:树的结点,子树和空树,结点的度和层次,有序树和无序树,森林,树的表示方法,总结之前介绍的所有的 数据结构都是 线性存储结构。本章所介绍的树结构是一种非线性存储结构,存储的是具有“一对多”关系的数据元素的集合。 (A)
上一节讲了 二叉树的顺序存储,通过学习你会发现,其实二叉树并不适合用数组存储,因为并不是每个二叉树都是完全二叉树,普通二叉树使用 顺序表存储或多或多会存在空间浪费的现象。 本节我们学习二叉树的 链式存储结构。 图 1 普通二叉树示意图 如图 1 所示,此为一棵普通的二叉树,若将其采用链式存储,则只需从树的根节点开始,将各个节点及其左右孩子使用 链表存储即可。因此,图 1 对应的链式存储结构如图 2
二叉树的存储结构有两种,分别为顺序存储和链式存储。本节先介绍 二叉树的顺序存储结构。 二叉树的顺序存储,指的是使用 顺序表(数组)存储二叉树。需要注意的是,顺序存储只适用于完全二叉树。换句话说,只有完全二叉树才可以使用顺序表存储。 因此,如果我们想顺序存储普通二叉树,需要提前将普通二叉树转化为完全二叉树。 有读者会说,满二叉树也可以使用顺序存储。要知道,满二叉树也是完全二叉树,因为它满足完全二叉树
主要内容:广义表的另一种存储结构由于 广义表中既可存储原子(不可再分的数据元素),也可以存储子表,因此很难使用 顺序存储结构表示,通常情况下广义表结构采用 链表实现。 使用顺序表实现广义表结构,不仅需要操作 n 维数组(例如 {1,{2,{3,4}}} 就需要使用三维数组存储),还会造成存储空间的浪费。 使用链表存储广义表,首先需要确定链表中节点的结构。由于广义表中可同时存储原子和子表两种形式的数据,因此链表节点的结构也有两种,
本文向大家介绍PHP清除缓存的几种方法总结,包括了PHP清除缓存的几种方法总结的使用技巧和注意事项,需要的朋友参考一下 PHP清除缓存的几种方法总结 现在开发的项目是用tp3.1版本的,在开发过程中我们常常会遇到页面缓存的问题(特别是html的缓存);刷新后还是旧版的数,再刷新下还是旧版数据,慢慢的开始怀疑人生了,哈哈;所以在开发过程中我们又必要每次及时清除缓存。 清除缓存的方法大概有3种(都是实
主要内容:邻接表计算顶点的出度和入度通常,图更多的是采用 链表存储,具体的存储方法有 3 种,分别是 邻接表、 邻接多重表和 十字链表。 本节先讲解图的邻接表存储法。邻接表既适用于存储无向图,也适用于存储有向图。 在具体讲解邻接表存储图的实现方法之前,先普及一个"邻接点"的概念。在图中,如果两个点相互连通,即通过其中一个顶点,可直接找到另一个顶点,则称它们互为邻接点。 邻接指的是图中顶点之间有边或者弧的存在。 邻接表存储图的实现方式