【数据结构】数组和广义表
感觉数组这一段没讲什么太多的东西。
先是讲了下定义,就是每个维度上都有对应的前驱后继,首尾元素例外。操作只有初始化 销毁 取元素 修改元素。然后讲了下适合用顺序存储结构,多维情况下根据下标(j1 j2 j3 ... jn)找到对应像素的存储位置 cn = L, ci-1 = bi * ci, LOC = LOC基址 + Σciji , L为每个元素存储的单位。 然后给了些实现代码。
新知识是: va_start( , );
va_arg( , );
va_end();
这三个可以用来处理变长参数表信息。
接着就是讲矩阵了。
首先是特殊矩阵的压缩。对于有规律的特殊矩阵,如对角矩阵、下(上)三角矩阵,对角矩阵。可以根据规律将矩阵存在一维数组中,建立起原始下标与压缩后矩阵下标的对应关系就好。
对没有规律的稀疏矩阵,只存储稀疏矩阵的非0元。需要三元组表存储(行、列、元素值)。根据三元组表的不同表示方式,得到稀疏矩阵不同的压缩存储方法。
①三元组顺序表 以行序为主序排列。 就是用个数组存起来,行号小的放前面。 讲了下这种结构下转置的操作,关键讲了下如何在转置后以行为主排序。又讲了个快速转置,就是存储了原矩阵每一列首元素的位置和每一列元素个数,这样就不用在之后排序了,直接放在对的位置就好了。
②行逻辑链接的顺序表,就是把每行第一个非0位置存了起来,为了方便抽取任意一行。讲了两个稀疏矩阵相乘的例子,说来说去就是为了去掉0与其他元素相乘这样冗余的计算需要行起始位置,具体没看,太繁琐。没什么新技术。
③十字链表 在两个稀疏矩阵相加时,非零元素数量变化可能很大,不宜采用顺序存储结构。 这种结构每个非零元有5个域(行、列、值、该行下一元素指针、该列下一元素指针) 用两个一维数组存储每一行和每一列的头结点。
广义表 说白了,就是一个表,表中的元素也可以是表。开始说表可以共享、可以递归但是后面的介绍都是在不可共享不可递归的前提下介绍的....表头和表尾的定义也略奇怪。表头很普通,就是第一个元素。表尾居然是剩下的所有元素。定义结构时,用到了联合跟枚举,感觉看了很有收获。
typedef enum{ATOM, LIST} ElemTag; typedef struct GLNode{ElemTag tag;union{AtomType atom; //元素可能是原子struct {struct GLNode *hp, *tp;}ptr; //也可能是另一个广义表}; }*GList;
讲了m元多项式的表示,大概意思就是不断的分解主变元,得到系数。如:
P=X10Y3Z2+2X6Y3Z2+3X5Y2Z2+X4Y4Z+6X3Y4Z+2YZ+15
=((X10+2X6)Y3+3X5Y2)Z2+((X4+6X3)Y4+2Y)Z
这样就可以用Z的系数表示多项式,而Z的系数又是Y的多项式,Y的系数又是X的多项式 这样就可以用广义表表示了。
之后讲了下递归算法求广义表深度(括号重数)和广义表复制,没仔细看好繁琐啊... 而且我在网上也没查到什么关于广义表的应用,于是不想看了..
【数据结构】数组和广义表相关推荐
- 数据结构数组计算机中的应用,2018考研计算机:数据结构数组和广义表复习重点...
2018考研计算机:数据结构数组和广义表复习重点 2017-08-17 16:00 | 考研集训营 <数据结构(C语言版)>复习重点在二.三.六.七.九.十章,考试内容两大类:概念,算法, ...
- 数据结构----数组与广义表专题
数组与广义表专题 数组的顺序表示和实现 前言 数组中任意一个元素存储地址的计算 一维数组 二维数组 更一般的二维数组 矩阵的压缩存储 前言 对称矩阵 三角矩阵 前言 上三角对应关系 下三角关系 三对角 ...
- 数据结构--数组和广义表
数组 数组的定义: 数组:按一定格式排列起来,具有相同类型的数据元素的集合 一维数组:若线性表总的数据元素为非结构的简单元素,则称为一维数组 一维数组的逻辑结构:线性结构.定长的线性表 int num ...
- 第五章:1.数组和广义表 -- 数组
前言: 2.3.4章讨论的线性结构中的数据元素都是非结构的原子类型,元素的值是不再分解的.本章讨论的两种数据结构---数组和广义表可以看成是线性表在下述含以上的扩展:表中的数据元素本身也是一个数据结构 ...
- Java数据结构和算法:字符串、数组和广义表
数组和广义表是与前述的线性表有所区别的数据结构.它们可以看成是线性表在下述含义上的扩展:线性表中的元素本身也是一个数据结构 字符串 字符串的定义.存储结构 字符串(string)是由n (n≥0) 个 ...
- 【数据结构总结】第四章:串、数组和广义表(线性结构)
第四章:串.数组和广义表(线性结构) 提示:本文主要是以思维导图的形式概括数据结构第一章的精华内容,基本不会用到文字性的内容,目的是为了给大家梳理每个重要的知识点的相关概念,方便大家在复盘的时候快速阅 ...
- 数据结构05数组和广义表
第五章 数组 和 广义表 数组和广义表可以看成是线性表在下述含义上的扩展:表中的数据元素本身也是一个数据结构. 5.1 数组的定义 n维数组中每个元素都受着n个关系的约束,每个元素都有一个直接后继元素 ...
- 数组和广义表 - [数据结构]
2005-09-07 数组和广义表 - [数据结构] 第五章 数组和广义表 --非线性数据结构 5.1 数组的定义和运算 ☆二维数组的逻辑结构形式定义为: 2_Array=( D, R ) 其中 D= ...
- 《数据结构》-第四章 串、数组和广义表(习题)
第四章 串.数组和广义表练习题 本章考点较少易于掌握,对于串的重点考点为串的模式匹配算法:数组的主要考点为数组下标与存储地址计算和特殊矩阵的压缩存储方法:针对广义表的考点主要为在广义表中取原子项(表) ...
- 数据结构:串、数组和广义表
串 线性结构:线性表.栈和队列.串与数组和广义表 串的逻辑结构和线性表极为相似,区别仅在于串的数据对象限定为字符集.在基本操作上,串和线性表有很大差别.线性表的基本操作主要以单个元素作为操作对象,如查 ...
最新文章
- 统一用户及权限管理系统
- 【Linux】一步一步学Linux——tr命令(55)
- 回归素材(part5)--白话机器学习算法
- 使用 Apache Hadoop 处理日志
- python有趣的代码-python有趣的一行代码
- python cprofile_Python Profilers 分析器
- 福建省计算机c语言成绩查询时间,计算机C语言等级考试模拟题(福建省).doc
- linux下载安装花生壳
- 国产开源数据可视化套件Cboard使用
- 服务器怎么做好安全防护措施
- 2020年阴历二月二十六 投资理财~读万科财报有感
- 单条SQL语句实现复杂逻辑几例(转)
- 电脑怎样设置定时关机
- 基于handsome主题的一些美化修改
- 大数据就业前景,分析的太到位了
- 关于airdroid免root操作
- 房租分期业务系统-抓住新的市场机遇
- Windows下Python的安装
- Android实现计时器(Handle+Runable)
- 暗影格斗3显示无服务器,暗影格斗3总是显示无法连接网络