【数据结构】广义表的基本概念

广义表的基本概念

广义表不是考试的重点,只要理解基本概念就行了。

书上介绍的广义表,我觉得简单来理解的话就是狭义的列表,因为书上规定了列表的表头可以是原子或者子表,但是表尾必须是子表,在python中列表则没有这样的规定。

关于广义表的三个重要结论:

(1)列表的元素可以是子表,而子表的元素还可以是子表,也就是说广义表是可以嵌套定义的。

(2)列表可以为其他列表所共享

(3)列表可以是一个递归的表,如E = (a , E) 

广义表的两种存储结构

头尾链表存储结构

//广义表的头尾链表存储表示
typedef int AtomType;

typedef enum{ATOM, LIST} ElemTag;   //ATOM=0表示原子,LIST=1表示子表
typedef struct GLNode{
    ElemTag tag;        //公共部分,用于区别是原子还是子表
    union {
        AtomType  atom; //原子结点的数据域
        struct {
            struct GLNode *hp, *tp;
        } ptr;      //子表的指针域,分别指向表头和表尾
    };
} *GList;

扩展线性链表存储结构

//广义表的扩展线性链表存储表示
typedef enum{ATOM, LIST} ElemTag;
typedef struct GLNode{
    ElemTag  tag;
    union {
        AtomType atom;
        struct GLNode *hp;
    };
    struct GLNode *tp;
} *GList;
发布了130 篇原创文章 · 获赞 151 · 访问量 19万+

猜你喜欢

转载自blog.csdn.net/haohulala/article/details/95382759