完善下列程序每小题在PASCAL语言(a)和C语言(b)中任选一题下面是一个将广义表逆置的过程例如原来广义表为((ab)c(de))经逆置后为((ed)c(ba))
(a)算法的PASCAL语言过程描述(编者略)(b)算法的C语言过程描述
typedef struct glistnode
{int tag;
struct glistnode *next;
union{char data;
struct{struct glistnode *hp*tp;}ptr;
}val;
}*glistgnode;
glist reverse(p)
glist p;
{glist qhts;
if(p==NULL) q=NULL;
else
{if__()__ { q=(glist)malloc(sizeof(gnode)); q>tag=;
q>valdata=p>valdata; }
else {__()__
if __()__
{t=reverse(p>valptrtp); s=t;
while(s>valptrtp!=NULL) s=s>valptrtp;
s>valptrtp=(glist)malloc(sizeof(gnode));
s=s>valptrtp;s>tag=;s>valptrtp=NULL;
s>valptrhp=h; __()__}
else {q=(glist)malloc(sizeof(gnode));q>tag=;
q>valptrtp=NULL; __()__; }
}
}
return(q);
}【上海大学 六 (分)】
[] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] []