首页
学习
活动
专区
圈层
工具
发布

多重表(广义表)

但是在我们常见的某些应用,比如Excel的表格中,我们发现表并不一定是线性表,Excel中的表就明显是二维的结构 ? 那么在数据结构中,我们会使用这种广义上的表吗?...答案是会,我们也会、或者说我们也能使用这样的非线性表。其实我们早就已经在使用这样的非线性表、广义表了,那就是多维数组。不难发现二维数组就可以抽象成Excel当中的表的样子。...那么,广义表的定义是怎样的呢?...可能会有人发现一个小小的问题,就是为什么我又将广义表叫作多重表呢?...(存储学生选课的抽象的二维多重表,横向代表学生A,B,C……纵向代表课程1,2,3……,若某一项打勾则表示该学生选了该课程,比如若A1打勾则表示学生A选择了课程1) 但是,现在情况有了新条件,这一所大学我们知道三个信息

1.5K20

5.4 广义表

01 广义表的定义 1、广义表是线性表的推广,也有人称其为列表(lists,用复数形式以示与统称的表list的区别)。广泛地用于人工智能等领域的表处理语言LISP语言,把广义表作为基本的数据结构。...02 广义表的存储结构 1、由广义表(a1,a2,a3...an)中的数据元素可以具有不同的结构(或是原子,或是列表),因此难以用顺序存储结构表示,通常采用链式存储结构,每个数据元素可用一个结点表示。...2、由于列表中的数据元素可能为原子或列表,由此需要两种数据结构的结点:一种是表结点,用以表示列表;一种是原子结点,用以表示原子。 3、若列表不空,则可分解成表头和表尾。...由此,一个表结点可由3个域组成:标志域、指示表头的指针域和指示表尾的指针域;而原子结点只需两个域:标志域和值域。 如果您觉得本篇文章对您有作用,请转发给更多的人,点一下好看就是对小编的最大支持!

7923129
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    什么是广义表

    它被广泛的应用于人工智能等领域的表处理语言LISP语言中。...在LISP语言中,广义表是一种最基本的数据结构,就连LISP 语言的程序也表示为一系列的广义表 前面讲过,数组即可以存储不可再分的数据元素(如数字 5、字符 'a'),也可以继续存储数组(即 n 维数组...图 2 中链表存储的广义表用 C 语言代码表示为: Glist creatGlist(Glist C) { //广义表C C = (Glist)malloc(sizeof(Glist)); C->tag...{a,{b,c,d}} 的示意图如图 4 所示: 图 4 广义表 {a,{b,c,d}} 的存储结构示意图 图 4 存储广义表对应的 C 语言代码为: Glist creatGlist(Glist...广义表的复制详解(含C语言代码实现) 对于任意一个非空广义表来说,都是由两部分组成:表头和表尾。反之, 只要确定的一个广义表的表头和表尾,那么这个广义表就可以唯一确定下来。

    1.2K10

    数组和广义表 原

    三、广义表 1.定义 广义表是线性表的扩展,具体定义为n(n≥0)个元素的有限集合。 n的值是广义表的长度,如果n=0称广义表为空表。...广义表一般记作:LS=(a1,a2,……,an) 常见的广义表为:A=()、B=(())、C=(a,b)、D=(A,B,C)、E=(a,E) 广义表中含有元素的个数称为广义表的长度,广义表中含有的括号对数称为广义表的深度...广义表有三个重要的特点: 第一:广义表的元素可以是子表,而子表的元素还可以是子表,广义表是一个多层次的结构。 第二:广义表可以为其他广义表所共享。...第三:广义表可以是一个递归表,即表也可以是其本身的一个子表。 广义表的表头是广义表中的第一个元素,而表尾则是去掉表头之后的所有元素。 广义表中通常利用求表头和表尾运算求得广义表中某个元素的值。...link表示指针,指向广义表的下一个元素。 例如:广义表A=(a,(b,(c)),(d,e),f),利用链表存储的逻辑图如下: ? 广义表可以采用多种方式实现,最简单的方法是使用数组实现。

    1.2K20

    C语言顺序表

    C语言顺序表 简介:本文是我学习数据结构期间,用C语言所写的顺序表。...E-判空 D-基数 A-添加 R-删除 C-清空 I-输入 O-输出 X-元素 Q-退出 > E 空集 E-判空 D-基数 A-添加 R-删除 C-清空 I-输入 O-输出 X-元素 Q-退出 > d...-添加 R-删除 C-清空 I-输入 O-输出 X-元素 Q-退出 > o 集合: { 16, 25, 31, 49, 87 } E-判空 D-基数 A-添加 R-删除 C-清空 I-输入 O-输出 X...-元素 Q-退出 > A 元素: 54 E-判空 D-基数 A-添加 R-删除 C-清空 I-输入 O-输出 X-元素 Q-退出 > a 元素: 25 E-判空 D-基数 A-添加 R-删除 C-清空...X-元素 Q-退出 > C E-判空 D-基数 A-添加 R-删除 C-清空 I-输入 O-输出 X-元素 Q-退出 > o 集合: { } E-判空 D-基数 A-添加 R-删除 C-清空 I-输入

    58000

    C语言顺序表

    顺序表是c语言中的一个初阶的数据结构,相对简单,顺序表底层其实就是数组,物理上一定连续,逻辑上也连续 顺序表结构 typedef struct SeqList { SLDataType* arr;...因为头文件是类型的“共享声明载体”,顺序表的结构需要被多个源文件调用,所以写在头文件里面就很方便,只要其他原文件包含了头文件就能使用顺序表结构,那现在我们就可以根据这个头文件去创建一个顺序表的第一个节点然后再初始化内容...ps) { ps->arr = NULL; ps->size = ps->capacity = 0; } 将函数的声明写在头文件中,函数的实现写在cs.c文件中,通过指针操作符将顺序表初始化为一个空的顺序表...,成员大小和空间大小都为0 顺序表已经初始化为空指针和0 销毁 既然有了顺序表的初始化,就会可以销毁顺序表,同样定义一个函数 void SLDestroy(SL* ps) //顺序表的销毁 void SLDestroy...指针指向的空间如果不为空,就释放掉这个空间,然后将这个指针指向空指针,再把成员大小和空间大小都置为0,就代表顺序表已经销毁了 剩下就来实现顺序表的增删改查功能 插入 尾插 既然要在顺序表的尾部插入一个节点

    24910

    C语言求100~200的素数​

    例17:C语言编程实现输出100~200之间的素数。 解题思路:这个问题的算法很简单,在上一节的基础上,只要在外层增加一个for循环作为限制100-200之间就可以了。...源代码演示: #include//头文件  #include//为了引入sqrt求平方根函数  int main()//主函数  {   int number,i;//...=0)//如果求余不等于0,则为素数      printf("%d\n",number);//输出素数     }    return 0;//函数返回值为0  } 编译运行结果如下: 101 103...有了上一节的案例学习,相信读者对C语言实现求素数,根据常识,偶数不是素数,所以不必对偶数进行判定,只对奇数进行判定就可以。所以循环变量每次增值2。...C语言求100~200的素数 更多案例可以go微信公众号:C语言入门到精通,作者:闫小林

    4.8K3228

    5.3 数据结构广义表

    01广义表的定义 1、广义表是线性表的推广,也有人称其为列表(lists,用复数形式以示与统称的表list的区别)。广泛地用于人工智能等领域的表处理语言LISP语言,把广义表作为基本的数据结构。...02广义表的存储结构 1、由广义表(a1,a2,a3...an)中的数据元素可以具有不同的结构(或是原子,或是列表),因此难以用顺序存储结构表示,通常采用链式存储结构,每个数据元素可用一个结点表示。...4、以广义表为例,如何利用分治法进行递归算法设计。通常可以先写出问题求解的递归定义,和第二数学归纳法类似,递归定义由基本项和归纳项两部分组成。...6、广义表的深度定义为广义表中括弧的重数,是广义表的一种量度。 7、任何一个非空广义表均可分解成表头和表尾,反之,一对确定的表头和表尾可唯一确定一个广义表。...C语言 | 求特定规律数的和 更多案例可以go公众号:C语言入门到精通

    1.1K2723

    【小白必懂】C语言求完全数

    情景再现 小媛:小C,你知道什么是完全数吗? 小C:知道呀,难道是今天老师又出题你又不懂了嘛。 小媛:哈哈哈,是的,我现在脑子懵懵的,我的自信心完全受到了打击。 小C:没事的,都是小问题。...小C:慢慢补呗,都是小东西,不难的。 小媛:那你赶紧跟我说吧,我要学习。 小C:哈哈哈,行嘞。我们在写求完全数时必须要知道什么是完全数,这个你会吧? 小媛:就是不会,所以我就第一步就卡死了。...小C:对呀,你以为有多难。 小媛:那代码怎么写呢?多谢小 C 教导。 小C:你就是懒。首先我们算一下一个一个数有是数能够整除,你说怎么做? 小媛:不懂。...小C:哈哈哈,会了吧? 小媛:会了,挺简单的,好了,那我就先走了,多谢小 C教导。 小C:别急,你想想题目是啥? 小媛:题目是说求一个范围内的完全数有哪些,怎么了?...小C:是的,你看看下面的代码。

    1.2K20
    领券