广义表

广义表的定义

广义表是线性表的推广,是一种非线性的数据结构,也有人称其为列表。
广义表的实现主要应用递归,通过广义表可以更加理解和灵活使用递归


image.png

列表的元素可以是数据元素或子表,列表可以是一个递归的表。

广义表的存储结构

由于广义表的元素可以具有不同的结构(数据元素或子表),所以难以用顺序存储结构表示,通常采取链式存储结构。
广义表的节点存储结构
<1>头 HEAD <2>数据元素VALUE <3>子表 SUB


image.png

m元多项式的表示

一元多项式可以一个长度为m且每个数据元素有两个数据项(系数项和指数项)的线性表来表示。
m元多项式,一个m元多项式的每一项,最多有m个变元,如果用线性表来表示,如果用线性表来表示则,每个数据元素需要用m+1个数据项,以存储一个系数值和m个指数值。存在问题:
1、无论多项式中的各项变元是多是少,若都按照m个变元,分配存储空间,则将造成浪费。反之,按照实际的变元数分配存储空间,就会造成节点的大小不均,给操作来来不便。
2、对m值不同的多项式,线性表中的节点的大小也不同,这同样会引起存储管理的不便。
因此,由于m元多项式中的每一项的变化数目的不均匀性和变元信息的重要性,故不适应于线性表表示。

广义表的递归算法

求广义表的深度

复制广义表

建立广义表的存储结构

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 广义表(Lists,又称列表)是线性表的推广。线性表定义为n>=0个元素a1,a2,a3,…,an的有限序列。线性...
    Pitfalls阅读 12,409评论 0 2
  • 数组的定义和运算 C语言支持一维数组和多维数组。如果一个数组的所有元素都不是数组,那么该数组称为一维数组。 在ja...
    冰鑫925阅读 4,304评论 0 1
  • 概述 串:字符串的简称,串是一种特殊的线性表,特殊在其数据元素都是一个字符。 数组和广义表可以看做是线性表的扩充,...
    Lost_Robot阅读 4,419评论 0 2
  • Problem Description 采用"头尾法”存储广义表,实现以下广义表的操作: 1.Status Cre...
    vouv阅读 5,742评论 0 0
  • 每个阶段都有自己的美丽和痛苦,开心与心酸,想起两年前进高三时的补课,顶着35度高温在没有空调的顶楼,每天带两瓶冰坨...
    日拱一卒阅读 1,459评论 0 1

友情链接更多精彩内容