tree_childlist.c

来自「数据结构的一些头文件和例子包括了线性表」· C语言 代码 · 共 60 行

C
60
字号
/* 树的子表表示法*/

#include<stdio.h>
#define MAXNUM 20

typedef int DataType ;

struct EdgeNode {   	/* 子表中结点的结构 */
    int             nodeposition;
    struct EdgeNode *link;
};

struct ChiTreeNode {   /* 结点表中结点的结构 */
    DataType        info;
    struct EdgeNode *children;
};

struct ChiTree {   		/* 树结构 */
    int                n; 		/* 结点个数 */
    int                root;	/* 根结点的下标 */
    struct ChiTreeNode nodelist[MAXNUM];
};

typedef struct ChiTree *PChiTree;		/* 树类型的指针类型 */

int rightSibling_chitree(PChiTree t, int p) {
    int i;
    struct EdgeNode  *v;
    for (i = 0; i < t->n; i++) {
        v = t->nodelist[i].children;
        while (v != NULL)
            if (v->nodeposition == p)
                if (v->link == NULL)
                    return -1;
                else
                    return(v->link->nodeposition);
            else
                v = v->link;
    }
    return -1;
}

int parent_chitree(PChiTree t, int p) {
    int i;
    struct EdgeNode *v;
    for (i = 0; i < t->n; i++) {    /* 逐个检查树的各个结点,是不是父结点 */
        v = t->nodelist[i].children;/* 若检查的结点子表中有p,则返回值是该结点的位置 */
        while (v!=NULL)
            if (v->nodeposition == p)
                return(i);
            else
                v = v->link;
    }
    return -1;  /* 无父结点,则返回值为-1 */
}

int main() {
    return 0;
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?