//广义表的头尾链表存储表示
//杨鑫
#include <stdio.h>
#include <malloc.h>
#include <stdlib.h>
#include <string.h>
#define MAXSTRLEN 40 )
typedef char SString[MAXSTRLEN+1];
typedef char AtomType; // 定义原子类型为字符型
typedef enum{
ATOM, LIST // ATOM==0:原子 LIST==1:子表
} ElemTag;
typedef struct GLNode
{
ElemTag tag; // 公共部分,用于区分原子结点和表结点
union // 原子结点和表结点的联合部分
{
AtomType atom; // atom是原子结点的值域, AtomType由用户定义
struct
{
struct GLNode *hp,*tp;
}ptr; // ptr是表结点的指针域,prt.hp和ptr.tp分别指向表头和表尾
}a;
} *GList, GLNode;
//初始化的广义表L
int InitGList(GList *L)
{
*L = NULL;
return 1;
}
//销毁广义表L
void DestroyGList(GList *L)
{
GList q1,q2;
if(*L)
{
if((*L)->tag == ATOM)
{
free(*L);
*L = NULL;
}
else
{
q1 = (*L)->a.ptr.hp;
q2 = (*L)->a.ptr.tp;
free(*L);
*L = NU
数据结构之---C语言实现广义表头尾链表存储表示
最新推荐文章于 2023-07-10 16:41:02 发布