广义表((x,y,z),A,B,(a,b,c))的表头表尾分别是什么?
时间: 2023-03-20 21:01:25 浏览: 131
广义表((x,y,z),A,B,(a,b,c))的表头是(x,y,z),表尾是广义表(A,B,(a,b,c))。其中,表头是广义表的第一个元素,表尾是去掉表头后剩余的广义表。在这个例子中,广义表的第一个元素是(x,y,z),所以它是表头;剩余的广义表是A,B,(a,b,c),所以它是表尾。
相关问题
求广义表表头表尾的c语言代码
广义表可以用链表来表示,每个节点包含两个指针,一个指向下一个节点,一个指向一个子表的头节点。因此,广义表的表头就是链表的头节点,表尾就是链表的尾节点。
以下是一个简单的基于链表的广义表实现,包括求表头和表尾的函数代码:
```c
#include <stdio.h>
#include <stdlib.h>
typedef struct node {
int tag; // 0表示元素节点,1表示子表节点
union {
int data; // 元素节点的值
struct node* sublist; // 子表节点的指针
};
struct node* next; // 下一个节点的指针
} Node;
// 求广义表的表头
Node* get_head(Node* list) {
if (list == NULL) {
return NULL;
}
return list;
}
// 求广义表的表尾
Node* get_tail(Node* list) {
if (list == NULL) {
return NULL;
}
Node* p = list;
while (p->next != NULL) {
p = p->next;
}
return p;
}
```
其中,`Node`结构体表示广义表的一个节点,`tag`字段表示节点类型,0表示元素节点,1表示子表节点。`data`字段表示元素节点的值,`sublist`字段表示子表节点的指针,`next`字段表示下一个节点的指针。
`get_head`函数直接返回链表的头节点;`get_tail`函数遍历整个链表,直到找到最后一个节点,然后返回该节点的指针。
广义表取表头表尾_广义表的深度和长度(C语言)详解
广义表是一种数据结构,它可以看做是一个链表的集合,其中每个节点可以是一个单独的元素或者是一个子表。广义表的深度指的是广义表中嵌套的子表的最大层数,而广义表的长度指的是广义表中元素的总个数。
取广义表的表头和表尾可以使用如下的代码:
```C
typedef struct GLNode{
int tag; // 标志域,0表示单元素,1表示子表
union{
char data;
struct GLNode *sublist;
}val;
struct GLNode *next;
}GLNode, *GList;
// 取广义表的表头
int getHead(GList L, char *head){
if(L == NULL || L->tag == 1) return 0; // 空表或者表头为子表,返回0
*head = L->val.data; // 取出表头元素
return 1;
}
// 取广义表的表尾
int getTail(GList L, GList *tail){
if(L == NULL) return 0; // 空表,返回0
*tail = L->next; // 取出表尾指针
return 1;
}
```
其中,广义表使用链表的形式来存储,每个节点中的tag标志域表示节点的类型,0表示单元素,1表示子表。如果节点是单元素,则val域存储该元素的值;如果节点是子表,则val域存储该子表的头指针。
使用上述代码可以方便地取出广义表的表头和表尾,但是需要注意的是,由于广义表中可能嵌套子表,因此取表尾时需要返回一个指向子表的头指针。
相关推荐
![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)