广义表A=(a,b,(c,d),(e,(f,g))),表头是 ;表尾是 ;长度为 ;深度为 ;H(T(H(T(T(A)))))的值为 ;f表示为 。
时间: 2024-05-18 08:16:14 浏览: 20
广义表A的表头是a,表尾是(b,(c,d),(e,(f,g))),长度为6,深度为3。
H(T(H(T(T(A)))))表示先将A中最靠内层的子表(T(A))替换为其表头a和表尾(b,(c,d),(e,(f,g)))的组合,即得到表达式a,b,(c,d),(e,(f,g)))。然后再将这个表达式中最靠内层的子表(T(a))替换为其表头a和表尾b,(c,d),(e,(f,g)))的组合,即得到表达式a,a,b,(c,d),(e,(f,g)))。最后再将这个表达式中最靠内层的子表(T(a))替换为其表头a和表尾b,(c,d),(e,(f,g)))的组合,即得到表达式a,a,a,b,(c,d),(e,(f,g)))。
f表示为取广义表A的第3个元素,即(c,d)。
相关问题
18.广义表A=(a,b,(c,d),(e,(f,g))),表头是 ;表尾是 ;长度为 ;深度为 ;H(T(H(T(T(A)))))的值为 ;f表示为 。
广义表A的表头是a,表尾是(b,(c,d),(e,(f,g)))。
广义表A的长度为5,即A中包含5个元素。
广义表A的深度为3,因为A的表头a是一个原子,深度为1,而A的表尾是一个包含三个子表的表,深度为2,而子表中又包含子表,深度为3。
H(T(T(A)))的结果是(b,(c,d),(e,(f,g))),然后再对其取尾,结果为(c,d),(e,(f,g))。接着,对该表的头部取头,结果为c。因此,H(T(H(T(T(A)))))的值为c。
广义表f的表示方式为f(g,h),其中g表示广义表的表头,h表示广义表的表尾。
用c语言写一个广义表 A=((a,b,c),(d,e,f))
您好!以下是用C语言编写广义表的代码:
```
#include<stdio.h>
#include<stdlib.h>
typedef struct GLNode{
int tag; // 标志域,tag=1为原子,tag=0为子表
union{
char atom; // 原子结点的值域
struct GLNode* hp; // 子结点指针
}val;
struct GLNode* tp; // 指向下一个子节点
}*GList;
void CreateGList(GList *L, char* str); // 创建广义表
void PrintGList(GList L); // 输出广义表
void CreateGList(GList *L, char* str){
if(!L) return;
char c = *str++; // 获取第一个字符
if(!c) *L = NULL; // 如果字符串为空,则广义表也为空
else{
*L = (GList)malloc(sizeof(struct GLNode)); // 分配内存
if(c == '('){ // 如果当前字符为'(',则说明是子表
(*L)->tag = 0; // 标记为子表
(*L)->val.hp = NULL; // 初始化子结点指针
CreateGList(&((*L)->val.hp), str); // 递归创建子表
c = *str++; // 获取下一个字符
}else{
(*L)->tag = 1; // 否则为原子
(*L)->val.atom = c; // 存储原子值
c = *str++; // 获取下一个字符
}
(*L)->tp = NULL; // 初始化下一个子节点指针
if(c == ','){ // 如果下一个字符为',',则说明还有兄弟子节点
CreateGList(&((*L)->tp), str); // 递归创建兄弟节点
}
else if(c == ')'){ // 如果下一个字符为')',则子节点创建完毕
return;
}
}
}
void PrintGList(GList L){
if(!L) return;
if(L->tag == 1){ // 如果当前节点为原子
printf("%c", L->val.atom);
}else{ // 否则为子表
printf("(");
PrintGList(L->val.hp); // 递归输出子表
printf(")");
}
if(L->tp) printf(","); // 如果有兄弟子节点,则输出','
PrintGList(L->tp); // 递归输出兄弟子节点
}
int main(){
char* str = "((a,b,c),(d,e,f))";
GList L;
CreateGList(&L, str);
PrintGList(L);
printf("\n");
return 0;
}
```
希望对您有帮助~
相关推荐
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)