广义表

数据结构基础概念篇

半城伤御伤魂 提交于 2019-12-21 23:46:01
数据结构基础概念篇 原创 小草莓lllll 发布于2017-11-14 13:44:24 阅读数 158267 收藏 更新于2017-11-14 13:44:24 分类专栏: 数据结构与算法 版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接: https://blog.csdn.net/qq_31196849/article/details/78529724 展开 <h1 id="数据结构"><a name="t0"></a><a name="t0"></a>数据结构</h1> 一些概念 数据结构就是研究数据的 逻辑结构 和 物理结构 以及它们之间 相互关系 ,并对这种结构定义相应的运算,而且确保经过这些运算后所得到的新结构仍然是原来的结构类型。 数据:所有能被输入到计算机中,且能被计算机处理的符号的集合。是计算机操作的对象的总称。 数据元素:数据(集合)中的一个“个体”,数据及结构中讨论的 基本 单位 数据项:数据的不可分割的最小单位。一个数据元素可由若干个数据项组成。 数据类型:在一种程序设计语言中,变量所具有的数据种类。整型、浮点型、字符型等等 逻辑结构:数据之间的相互关系。 集合 结构中的数据元素除了同属于一种类型外,别无其它关系。 线性结构 数据元素之间一对一的关系 树形结构 数据元素之间一对多的关系

广义表的实现

我的未来我决定 提交于 2019-12-03 09:31:56
1 #pragma once 2 #include <iostream> 3 #include <vector> 4 #include <algorithm> 5 using namespace std; 6 7 template <class T> 8 struct GenListNode; 9 10 template <class T> 11 struct Item { //广义表结点的值项 12 int utype; 13 union { 14 int ref = 0; 15 T value; 16 GenListNode<T> * hlink; 17 18 }info; 19 Item() : utype(0) {} 20 Item(const Item & other) { 21 utype = other.utype; 22 info = other.info; 23 } 24 }; 25 26 template <class T> 27 struct GenListNode { 28 Item<T> item; 29 GenListNode<T> * tlink; 30 GenListNode() : item(), tlink(nullptr) {} 31 GenListNode(const GenListNode<T> & other) : item(other

二叉树的广义表创建及中序遍历、后序遍历、层次遍历的非递归算法(C语言)

北战南征 提交于 2019-12-03 07:40:14
广义表创建二叉树 关于用广义表的形式表示二叉树的形式如下 ①广义表中的一个字母代表一个结点的数据信息。 ②每个根结点作为由子树构成的表的名字放在义表的前面。 ③每个结点的左子树与右子树之间用逗号分开。若结点只有右子树面无左子树,则该逗号不能省略。 ④在整个广义表的末尾加一个特殊符号(如“@”)作为结束标志。 下面先用自然语言描述算法如下。 依次从广义表中取得-个元素,并对取得的元素做如下相应的处理。 ①若当前取得的元素为字母,则按如下规则建立一个新的(链)结点。 a)若该结点为二叉树的根结点,则将该结点的地址送T。 b)若该结点不是二叉树的根结点,则将该结点作为左孩子(若标志flag为1)或者右子若标志flag为2)链接到其双亲结点上(此时双亲结点的地址在栈顶位置)。 ②若当前取得的元素为左括号“(”,则表明一个子表开始,将标志flag置为1,同时将面那个结点的地址进栈。 ③若当前取得的元素为右括号“)”,则表明一个子表结束,做退栈操作。 ④若当前取得的元素为逗号,则表明以左孩子为根的子树处理完毕,接着应该处理孩子为根的子树,将标志flag置为2。 如此处理广义表中的每一个元素,直到取得广义表的结束符号“@”为止。 二叉树的中序遍历(非递归) 算法的核心思想是: 当P所指的结点不为空时.则将该结点所在链结点的地址进栈,然后再将”指向该结点的左孩子结点

数据结构――一些概念

匿名 (未验证) 提交于 2019-12-03 00:39:02
数据结构就是研究数据的 逻辑结构 和 物理结构 以及它们之间 相互关系 ,并对这种结构定义相应的运算,而且确保经过这些运算后所得到的新结构仍然是原来的结构类型。 数据:所有能被输入到计算机中,且能被计算机处理的符号的集合。是计算机操作的对象的总称。 数据元素:数据(集合)中的一个“个体”,数据及结构中讨论的 基本 单位 数据项:数据的不可分割的最小单位。一个数据元素可由若干个数据项组成。 数据类型:在一种程序设计语言中,变量所具有的数据种类。整型、浮点型、字符型等等 逻辑结构:数据之间的相互关系。 集合 结构中的数据元素除了同属于一种类型外,别无其它关系。 线性结构 数据元素之间一对一的关系 树形结构 数据元素之间一对多的关系 图状结构或网状结构 结构中的数据元素之间存在多对多的关系 物理结构/存储结构:数据在计算机中的表示。物理结构是描述数据具体在内存中的存储(如:顺序结构、链式结构、索引结构、哈希结构)等 在数据结构中,从逻辑上可以将其分为线性结构和非线性结构 数据结构的基本操作的设置的最重要的准则是, 实现应用程序与存储结构的独立 。实现应用程序是“逻辑结构”,存储的是“物理结构”。逻辑结构主要是对该结构操作的设定,物理结构是描述数据具体在内存中的存储(如:顺序结构、链式结构、索引结构、希哈结构)等。 顺序存储结构中,线性表的逻辑顺序和物理顺序总是一致的。但在链式存储结构中

【软考】【软件设计师】【知识模块】【第3章:数据结构】

感情迁移 提交于 2019-12-02 23:25:51
第三章:数据结构: 数据结构是程序设计的重要基础 学会数据结构的目的:   学会从问题出发,分析和研究计算机加工的数据的特性,   以便为应用所涉及的数据选择适当的逻辑结构、存储结构及其相应的操作方法;   【对于一个数据结构,需要考虑三个因素:逻辑结构、存储结构、运算方法(操作方法)】   为提高利用计算机解决问题的效率服务;   数据结构是指:数据元素的集合及元素间的相互关系和构造方法。     元素间的相互关系:数据的逻辑结构     元素间关系的存储:存储结构(或称之为 物理结构)        数据结构的分类:     线性结构     非线性结构       又分为树结构、图结构;       数据结构是算法设计的基础。   线性结构:线性结构主要用于 对客观世界中具有单一前驱和后继的数据关系进行描述。     线性表       按照存储方式分类:         采用顺序存储:用一组地址连续的存储的存储单元 依次存储线性表中的数据元素,           现象:逻辑上相邻的两个元素,在物理位置上也相邻。           优点:可以随机存取表中的元素,即可以对数据随机访问。           缺点:插入和删除需要移动其他元素;(有时的移动量挺大)           特点:              各个结点的空间应该需要事先分配完毕,后续不论是否有数据