广义表的基本操作:创建,清楚,遍历,求深度,逆转
typedef enum {ATOM, LIST}ElemTag;
typedef int AtomType;
typedef struct __GLNode
{
ElemTag tag;
union
{
AtomType atom;
struct
{
struct __GLNode *hp, *tp;
}ptr;
}content;
}GList;
//匹配表内容
int sever(char **mainstr, char *substr)
{
int k = 0;
char *ph = *mainstr;
while(1)
{
if(**mainstr == '(')
{
k++;
}
else if(**mainstr == ')')
{
k--;
}
else if(**mainstr == ',')
{
if(k == 1)
{
**mainstr = '(';
break;
}
}
else if(** mainstr == '\0')
{
break;
}
(*mainstr)++;
}
if(k != 0)
{
ph = ph + k;
while(ph != *mainstr)
{
*substr++ = *ph++;
}
*substr = '\0';
}
else
{
ph++;
while(ph != (*mainstr - 1))
{
*substr++ = *ph++;
}
*substr = '\0';
}
return 0;
}
//创建广义表
void createGList(GList **ppl, char *str)
{
GList *ptmp;
GList *pmove;
char sub[20];
if(strlen(str) == 2)//(),空情况
{
printf("创建空表\n");
*ppl = NULL;
}
else

本文探讨了广义表的基础操作,包括使用C语言创建、清除、遍历和求深度以及逆转广义表的方法。这些操作对于理解和处理复杂数据结构至关重要。
最低0.47元/天 解锁文章
1603

被折叠的 条评论
为什么被折叠?



