广义表的长度和深度计算

广义表(a,(a,b),d,e,((i,j),k))的长度是( ),深度是( )

其长度为5、深度为3、为什么呢?
长度的求法为最大括号中的逗号数加1,
即为:
a后面的逗号,
(a,b)后面的逗号,
d后面的逗号,
e后面的逗号,((i,j),k)前面的逗号,
总计有四个,那么广义表的长度是4+1=5;

深度的求法为上面每个元素的括号匹配数加1的最大值,
a为1+0=1;
(a,b)为1+1=2;
d,e类似;
((i,j),k)为2+1=3;
故深度为3。

  • 65
    点赞
  • 132
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
C语言可以通过链的方式来实现存储广义广义是由原子元素和子构成的一种数据结构,可以是空、原子元素或由若干个广义组成的线性链。 首先,我们可以定义一个结构体来广义的节点: ```c typedef struct Node { char data; // 数据元素 struct Node* next; // 指向下一个节点的指针 struct Node* sublist; // 指向子的指针 } Node; ``` 然后,我们可以定义一些操作来处理广义,例如创建节点、插入节点、计算长度深度等: ```c // 创建节点 Node* createNode(char data) { Node* newNode = (Node*)malloc(sizeof(Node)); newNode->data = data; newNode->next = NULL; newNode->sublist = NULL; return newNode; } // 插入节点到广义的尾部 void insertNode(Node** head, char data) { if (*head == NULL) { *head = createNode(data); } else { Node* current = *head; while (current->next != NULL) { current = current->next; } current->next = createNode(data); } } // 计算广义长度 int calculateLength(Node* head) { int length = 0; Node* current = head; while (current != NULL) { length++; current = current->next; } return length; } // 计算广义深度 int calculateDepth(Node* head) { if (head == NULL) { return 0; } int maxDepth = 0; Node* current = head; while (current != NULL) { if (current->sublist != NULL) { int depth = calculateDepth(current->sublist); if (depth > maxDepth) { maxDepth = depth; } } current = current->next; } return maxDepth + 1; } ``` 使用上述定义的数据结构和操作,我们就可以实现存储广义,并计算广义长度深度了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值