广义表(扩展线性链表的存储结构)

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdbool.h>

#define MAX 50

typedef enum {
   ATOM,LIST}ElemTag;	
typedef char AtomType;


typedef struct lnode{
   
	ElemTag flag;			//ATOM==0原子;   LIST==1 子表 
	union{
   					//原子结点和表结点的联合部分 
		AtomType atom;
		struct lnode * hp;	
	}val;
	struct lnode * tp;	
}*Gl, Lnode;

void InitGlnode(Gl *gl, char *ch);	//创建广义表(扩展线性链表的存储结构)

bool sever(char *head, char *tail); 		//分离函数 
	
int Gllen(Gl gl);				//长度 
int Depth(Gl gl);				//深度 
void show(Gl gl);			//打印 

void pshow(Gl gl);

int main(void)
{
   
	Gl gl = NULL;
	char ch1[MAX] = "((a,b),(c,d))";
	char ch2[MAX] = "((a),(b),((c)),((1,2,(r,(g,h,e),h))),(h))";
	char ch3[MAX] = "((),(),())";
	char ch4[MAX] = "(a,((b,c),d))";
	char ch5[MAX] = "((),(e),(a,(b,c,d)))";	
	
	InitGlnode(&gl, ch2);
	
	show(gl);	
//	pshow(gl);
		
	printf("\n");
	
	printf(
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值