#include<iostream>
#include<string>
using namespace std;
typedef enum{ATOM,LIST}ElemTag; //ATOM==0:原子,LIST==1:子表
typedef char AtomType; //原子值域类型
class GLNode{
friend class GList;
private:
ElemTag tag; //tag==ATOM表示原子结点,tag==LIST表示表结点
union
{
AtomType atom; //atom是原子的值域
struct{
GLNode* hp;
GLNode* tp;
}ptr; //ptr是表结点的指针域,ptr.hp和ptr.tp分别指向表头和表尾
};//union
};//GLNode
class GList{
public:
void sever(string &SS,string &hsub); //将非空串SS分割成两部分:
//hsub是第一个','之前的子串,SS为之后的串
void CreateGList(GLNode *&L,string S); //S是广义表的书写形式串,由S创建广义表L
void Traverse_GL(GLNode *L); //输出广义表L
void CopyGList(GLNode *&T,GLNode *L); //由广义表L复制得到广义表T
int GListDepth(GLNode *L); //求广义表L的深度
int GListLength(GLNode *L); //求广义表L的长度,即元素个数
void GetHead(GLNode *&M,GLNode *L); //取广义表的表头,用M返回
void GetTail(GLNode *&a
广义表的基本操作
最新推荐文章于 2021-03-22 21:21:31 发布
本文介绍了如何使用C++实现广义表的基本操作,包括创建、遍历、复制、求深度和长度、获取表头和表尾、插入和删除元素。通过GLNode类和GList类的定义及成员函数,详细阐述了广义表的管理与操作。
摘要由CSDN通过智能技术生成