当前位置: 代码迷 >> C语言 >> 两个结点连接的问题?
  详细解决方案

两个结点连接的问题?

热度:321   发布时间:2006-10-13 17:36:12.0
两个结点连接的问题?

这个算法是否能够实现两个结点的连接,如果不能的话请说明原因,谢谢了!
typedef struct node{
char ch;
struct node *lc,*rc;
}bitree;
#include <stdio.h>

main()
{
bitree *p,*q,*m; //定义指向结点的指针
bitree bt; //定义一个变量,即结点bt
bt.ch='a'; //初始化结点
bt.lc=NULL;
bt.rc=NULL;
m=&bt; //令指针m指向结点bt
p=bt.lc; //指针p指向结点bt的左孩子,即p指向空
q=(bitree *)malloc(sizeof(bitree)); //开辟一个新结点
q->ch='b'; //初始化新结点
p=q; //令p指向新结点

printf("%c",m->lc->ch);//用此判断两个结点是否能够连接
getch();
}

[此贴子已经被作者于2006-10-13 17:37:12编辑过]


----------------解决方案--------------------------------------------------------

typedef struct node{
char ch;
struct node *lc,*rc;
}bitree;
#include <stdio.h>

main()
{
bitree *q;
bitree bt;
bt.ch='a';
bt.lc=NULL;
bt.rc=NULL;

q=(bitree *)malloc(sizeof(bitree));
q->ch='b';
bt.lc=q;
printf("%c",bt.lc->ch);
getch();
}


----------------解决方案--------------------------------------------------------
你的意思是不能够实现连接了,那么请问下面的算法是否正确。此算法是教材上的。
在排序树中插入一个结点(递归算法),此算法同上面的类似,
void insert(Bitree *T,Bitree new)//为什么用二级指针
{
if(!(*T)) //最后T指向空
*T=new;//T指向新结点,怎么会连接

else if(new->data==(*T)->data) return;
else if(new->data<(*T)->data)
insert(&(*T)->lchild,new);
else
insert(&(*T)->rchild,new);
}
----------------解决方案--------------------------------------------------------
以下是引用明天不一样在2006-10-13 18:14:51的发言:
你的意思是不能够实现连接了,可以连接
那么请问下面的算法是否正确。此算法是教材上的。
在排序树中插入一个结点(递归算法),此算法同上面的类似,
void insert(Bitree *T,Bitree new)//为什么用二级指针 是因为有可能改变根结点
{
if(!(*T)) //最后T指向空
*T=new;//T指向新结点,怎么会连接
如果原来的树是空的,那就是直接将要插入的结点赋给根结点
else if(new->data==(*T)->data) return;//和根结点的值相同,不用插入
else if(new->data<(*T)->data) //对于一个二叉搜索树,左子树<根<右子树
insert(&(*T)->lchild,new);
else
insert(&(*T)->rchild,new);
}


----------------解决方案--------------------------------------------------------
谢谢版主
----------------解决方案--------------------------------------------------------

  相关解决方案