C语言建树和操作树的定义和函数吗?

来源:百度知道 编辑:UC知道 时间:2024/06/24 13:35:23

C语言和C++标准库都不提供对数据结构的支持. C++的标准模板库提供对一些数据结构的支持.

树是一种比较基本的数据结构, 建树和遍历可以用递归实现, 但一般不推荐用递归, 可以用循环+栈完成.

C语言本身不提供建立树和操作数的函数
----------------------
要建属和操作树只能自己编写相关代码

猪八戒_威客 的回答是很含糊的,甚至可以说是错误的。语言和库是不同的事物,甚至你可以用C语言调用由其他语言写的函数库。

“要建属和操作树只能自己编写相关代码”这句话更错了,因为,你可以从网上下载到扩展库来达到目的,而不是要自己动手、自己测试、自己承担由此带来的风险。

以二叉树为例:
typedef struct Bnode //二叉树节点描述
{ datatype data;
struct Bnode *Lchild,*Rchild;
}Btnode, *BTptr;
BTptr CreateLBtree (BTptr BT) //建立以BT为根节点指针的二叉链表
{ datatype ch;
int i=0;
BTptr p,q;
queuetype Q; Clearqueue(Q); //置队Q
BT=NULL; ch=getchar(); //树为空,读入数据
while(ch!=‘#’)
{ p=NULL; //P为新节点地址,但空节点地址为NULL
if(ch!=‘@’)
{ p=(BTptr)malloc(sizeof(BTnode); //申请新节点
p->data=ch; p->Lchild=p->Rchild=NULL;}
i++; Enqueue(Q,p); //节点序号计数,新节点地址或虚地址(NULL)进队
if(i==1) BT=p; // 第一输入节点为根
else {q=Getq