数据结构上机实践课程(2018年秋)10月机考

D. 广义表的深度

单点时限: 10.0 sec

内存限制: 512 MB

广义表(Lists,又称列表)是一种非线性的数据结构,是线性表的一种推广。即广义表中放松对表元素的原子限制,容许它们具有其自身结构。它被广泛的应用于人工智能等领域的表处理语言LISP语言中。广义表中可以存储原子或者子表,广义表的深度则为广义表中存储子表的最大层数。

现在希望你定义一个函数,返回指定广义表的深度。只需完成给定函数的定义。

int getListsDeepth(NODE* head){
   // TODO
}

其中

NODE表示链表的结构体,定义如下

typedef struct node{
    int tag;
    union{
        struct node* dlink;
        char data;
    }dd;
    struct node *link;
}NODE;

head为最外层广义表的头节点(存放有效数据)

提示

不会出现循环嵌套子表的情况,如$C=(a,C)$

#include <stdio.h>
#include <stdlib.h>

/* 其他声明与定义,细节隐藏不表 */

/* 你的代码将会被嵌入在这个部分 */

/* 其他声明与定义,细节隐藏不表 */

int main(){

    input(); /* 输入及其他处理,细节隐藏不表 */

    NODE* head = create();

    printf("%d", getListsDeepth(head));

    return 0;
}