#include<iostream>
using namespace std;
typedef char AtomType;
typedef enum{ ATOM, LIST }ElemTag;
typedef struct GLNode
{
ElemTag tag;
union
{
AtomType atom;
struct
{
GLNode *pHead, *pTail;
}table;
};
}GLNode, *GList;
void InitGList(GList &L)
{
L = NULL;
}//创建空的广义表
void DestroyGList(GList &L)
{
GList p1, p2;
if (L)
{
if (L->tag == ATOM)//原子结点
{
delete L;
L = NULL;
}
else//表结点
{
p1 = L->table.pHead;//保存表头指针
p2 = L->table.pTail;//保存表尾指针
delete L;//处理表结点
L = NULL;
DestroyGList(p1);//递归销毁表头
DestroyGList(p2);//递归销毁表尾
}
}
}
void CopyGList(GList &T, GList L)
{
if (!L)
T = NULL;
else
{
T = new GLNode;
T->tag = L->tag;
if (L->tag == ATOM)//递归时会用到
T->atom = L->atom;
else//表结点
{
CopyGList(T->table.pHead, L->table.pTail);
CopyGList(T->table.pTail, L->table.pTail);
}
}
数据结构之广义表(头尾链表存储)基本操作
最新推荐文章于 2023-12-04 22:54:15 发布
本文详细介绍了数据结构中的广义表概念,重点探讨了使用头尾链表进行存储的方法。内容包括广义表的定义、头尾链表的结构优势及如何实现广义表的基本操作,如插入、删除和查找等。
摘要由CSDN通过智能技术生成