一个广义表 A=(a,b,(c,d),(e,(f,g))), 则 Head(Tail(Head(Tail(Tail(A))))的值为()。
时间: 2024-06-14 09:05:47 浏览: 46
根据引用[1]中给出的广义表A=(a,b,(c,d),(e,(f,g))),我们可以按照以下步骤来求解Head(Tail(Head(Tail(Tail(A))))的值:
1. 首先,我们需要找到广义表A的第一个元素,即Head(A)。根据广义表的定义,Head(A)就是广义表A的第一个元素,即a。
2. 接下来,我们需要找到广义表A的第二个元素,即Tail(A)。根据广义表的定义,Tail(A)就是广义表A去掉第一个元素后的剩余部分,即(b,(c,d),(e,(f,g)))。
3. 然后,我们需要找到广义表(b,(c,d),(e,(f,g)))的第一个元素,即Head(Tail(A))。根据广义表的定义,Head(Tail(A))就是广义表(b,(c,d),(e,(f,g)))的第一个元素,即b。
4. 最后,我们需要找到广义表(b,(c,d),(e,(f,g)))的第二个元素,即Tail(Tail(A))。根据广义表的定义,Tail(Tail(A))就是广义表(b,(c,d),(e,(f,g)))去掉第一个元素后的剩余部分,即((c,d),(e,(f,g)))。
综上所述,Head(Tail(Head(Tail(Tail(A)))))的值为b。
相关问题
用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;
}
```
希望对您有帮助~
广义表A=(a,b,(c,d),(e,(f,g))),则Head(Tail(Head(Tail(Tail(A)))))的值为
广义表A=(a,b,(c,d),(e,(f,g)))的结构如下所示:
```
A = (a, b, (c, d), (e, (f, g)))
|
V
(c, d)
|
V
-
```
其中,Head(A) = a,Tail(A) = (b, (c, d), (e, (f, g))),Tail(Tail(A)) = ((c, d), (e, (f, g))),Head(Tail(Tail(A))) = (c, d),Tail(Head(Tail(Tail(A)))) = 空列表。
因此,Head(Tail(Head(Tail(Tail(A))))))的值为空列表。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pptx](https://img-home.csdnimg.cn/images/20210720083543.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.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)