广义表的理解

1.定义和理解

            广义表是n个元素组成的有限序列                 Ls = a1,a2,...,an),a1称为Ls的表头,其余元素组成的表a2,a3,...,an)称为表尾。(所以非空广义表的表尾一定是一个广义表)。 有表示习惯:大写字母表示广义表,小写字母表示单个元素。

            example:

            注意区分A,B

            A = (   )

           A称为空表, 广义表没有元素,理解上相当于集合上的空集   Ø

            B = (( ))

            广义表有一个元素,这个元素为空表。行当于集合上的       {Ø}

            C = (a,(b,c,d))

            C表有两个元素,第一个元素是原子a,第二个元素是子表

            D = ( (a,b) , (c) , d , ((e,f),g))        

            D表有四个元素,第三个为原子,其余都是子表。      

            广义表示是线性表的推广,线性表要求所有元素的类型相同,广义表中允许有原子和子表两种不同的元素。

2.  存储结构

            有两种较为常用的存储结构,这里介绍较为方便的一种。

            采用链式结构存储广义表需要定义原子结点和表结点

             原子结点:用于存储原子元素

 

 

    表节点


 

    表结点只是标志一个表的存在,其本身不存储原子元素信息

举个例子就清楚了:

 C = {a,(b,c,d)} 的广义表结构如下:

 

 结构体实现结点存储

typedef struct node
{
    int tag;//0-原子结点,1-表结点
    union
    {
        char data;//原子结点成员
        struct node* head;//表结点成员
    };
    struct node* next;
} Node;




 

 


  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值