数据结构习题及答案

源代码在线查看: 5.32.c

软件大小: 52 K
上传用户: GUAIGUAICHENGTI
关键词: 数据结构
下载地址: 免注册下载 普通下载 VIP

相关代码

				5.32④  试编写判别两个广义表是否相等的递归算法。
				
				要求实现以下函数:
				Status Equal(GList A, GList B);
				/* 判断广义表A和B是否相等,是则返回TRUE,否则返回FALSE */
				
				广义表类型GList的定义:
				typedef enum {ATOM,LIST} ElemTag;
				typedef struct GLNode{
				     ElemTag tag;
				     union {
				       char atom;
				       struct { 
				         GLNode *hp, *tp;
				       } ptr;
				     }un;
				} *GList;
				Status Equal(GList A, GList B)
				/* 判断广义表A和B是否相等,是则返回TRUE,否则返回FALSE */
				{ 
				  if(!A&&!B) return 1;                             //空表
				  if(!A->tag&&!B->tag&&A->un.atom==B->un.atom) return 1; //为原子结点且值相等
				  if(A->tag&&B->tag&&Equal(A->un.ptr.hp,B->un.ptr.hp)&&Equal(A->un.ptr.tp,B->un.ptr.tp))return 1;//表头表尾都相等
				  return 0;
				  }
				
							

相关资源