输出广义表中所有原子项及其所在层次的递归算法

来源:互联网 发布:北京市网络教育 编辑:程序博客网 时间:2024/05/16 10:46

试编写递归算法,输出广义表中所有原子项及其所在层次。

广义表类型GList的定义:

typedef enum {ATOM,LIST} ElemTag;typedef struct GLNode{    ElemTag tag;    union {       char atom;       struct {           GLNode *hp, *tp;       } ptr;    }un;} *GList;
实现函数如下:

void OutAtom(GList A, int layer, void(*Out2)(char, int))/* 递归地用函数Out2输出广义表的原子及其所在层次,layer表示当前层次 */{   if(A){             if(A -> tag == ATOM)//如果是原子节点,直接输出            Out2(A -> un.atom,layer);        else{//非原子节点,递归                 OutAtom(A -> un.ptr.hp, layer+1, Out2);//表头节点,递归            OutAtom(A -> un.ptr.tp, layer, Out2);//表尾节点,递归        }       }}

0 0
原创粉丝点击