美文网首页
数据结构

数据结构

作者: 萍水间人 | 来源:发表于2018-11-20 21:50 被阅读0次

    广义表

    数据结构中,广义表是一种比较重要的结构,至少在我看来

    typedef struct lnode
    {
        int tag;
        union
        {
            char data;
            struct lnode*sublist;
        }val;//联合体存储结构
        struct lnode *link;
    }GLNode;
    
    GLNode *CreatGL(char *&s)
    {
        GLNode *g;
        char ch = *s++;//后置++的意思是先*s然后再++
        if (ch != '\0')
        {
            g = (GLNode *)malloc(sizeof(GLNode));
            if (ch == '(')
            {
                g->tag = 1;//新节点作为表头节点
                g->val.sublist = CreatGL(s);//递归构造子表并链接到表头节点
            }
            else if (ch == ')')
                g = NULL;
            else if (ch == '#')
                g = NULL;//这一行代码貌似没啥用,
            else
            {
                g->tag = 0;
                g->val.data = ch;
            }
        }
        else
            g = NULL;
        ch = *s++;
        if (g != NULL)
            if (ch == ',')
                g->link = CreatGL(s);
            else
                g->link = NULL;
        return g;
    }
    

    更新一下,上面的代码除了一点点问题,原因就是那几个ifelse if
    写了半天才发现这个问题,惭愧2333

    不过这个递归的过程确实很值得学习,广义表本身就是一种递归形式的表格。

    相关文章

      网友评论

          本文标题:数据结构

          本文链接:https://www.haomeiwen.com/subject/chjfqqtx.html