您的位置:程序门 -> c/c++ ->



帮帮忙写个c程序


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


帮帮忙写个c程序
发表于:2008-01-22 15:26:02 楼主
实现二叉排序树的插入、删除功能。
【要求】:  
(1)演示程序以用户和计算机的对话方式执行。即在计算机终端上显示“提示信息”之后,由用户在键盘上输入演示程序中规定的运算命令;相应的输入数据和运算结果显示在其后。
(2)程序执行的命令包括:建立二叉排序树;二叉排序树的插入;二叉排序树的删除;输出结果;结束。
发表于:2008-01-22 16:23:521楼 得分:0
#include <iostream.h>

#include <stdlib.h>

typedef   struct   node   /*该结构体类型为二叉排序树的结点类型*/

{

              int   key;/*元素的关键字*/

              struct   node   *lchild;

              struct   node   *rchild;

}   tnode;

void   insertbst(tnode   *&t,tnode   *s)/*如果t中没有结点*s,就将该结点插入t中*/

{

              /*首先应该在原来的树t中查找,确定t中是否存在结点*s。如果存在,就不需再插入*/

              tnode   *f;/*如果t中存在该结点,则f指向该结点;否则,f指向新插入结点的双亲结点*/

              tnode   *p=t;

              while(p)

              {

                            f=p;

                            if(s-> key==p-> key)

                                          return;     /*结点*s在树t中存在,不需要插入*/

                            else   if(s-> key <p-> key)

                                          p=p-> lchild;

                            else

                                          p=p-> rchild;

              }

              /*退出循环时p为空,有可能t本身就为空*/

              if(!t)

                            t=s;

              else

              {

                            if(s-> key <f-> key)

                                          f-> lchild=s;

                            else

                                          f-> rchild=s;

              }

}

void   invisitbst(tnode   *t)/*中序遍历二叉排序树,输出结点的关键字*/

{

              if(t)

              {

                            invisitbst(t-> lchild   );

                            cout < <t-> key < <"   "   ;

                            invisitbst(t-> rchild   );

              }

}

tnode*   searchbst(tnode   *t,int   key)/*在二叉排序树中,查找关键字为key的结点*/

{

              if(t)

              {

                            if(key==t-> key)

                                          return   t;

                            else   if(key> t-> key)

                                          searchbst(t-> rchild   ,key);

                            else

                                          searchbst(t-> lchild   ,key);

              }

              else

                            return   null;

}

void   delete(tnode   *&t)     /*删除结点*t*/

{

              tnode   *temp,*temp1;

              if(t-> rchild   ==null)

              {

                            temp=t;

                            t=t-> lchild   ;

                            free(temp);

              }

              else   if(t-> lchild   ==null)

              {

                            temp=t;

                            t=t-> rchild   ;

                            free(temp);

              }

              else

              {

                            temp=t;

                            t=t-> lchild   ;

                            temp1=t;

                            while(temp1-> rchild   )

                                          temp1=temp1-> rchild   ;

                            temp1-> rchild   =temp-> rchild   ;

                            free(temp);

              }

}

void   deletebst(tnode   *&t,int   key)/*在树t中删除关键字为key结点*/

{

              if(t-> key   ==key)

                            delete(t);     /*删除结点*t*/

              else   if(t-> key   > key)

                            deletebst(t-> lchild   ,key);

              else

                            deletebst(t-> rchild   ,key);

}

main()

{           /*以关键字序列{45,24,53,12,37,93}为例*/

              tnode   *t;

              t=null;

              for(int   i=0;i <6;i++)

              {

                            tnode   *s=(tnode   *)malloc(sizeof(tnode));

                            cin> > s-> key   ;

                            s-> lchild   =s-> rchild   =null;

                            insertbst(t,s);

              }

              invisitbst(t);

              cout < <endl;

              deletebst(t,45);

              invisitbst(t);

              cout < <endl;

}
发表于:2008-01-22 16:24:262楼 得分:0
数据结构上的书   都有说!
发表于:2008-01-22 17:07:143楼 得分:0
lz
是做课程设计吧

还是自己多看看书,多练习练习吧
如果你以后决定做这行的话!
发表于:2008-01-22 20:16:004楼 得分:0
现在看书来不及了
这个程序急着要
我已经找到程序了
发表于:2008-01-22 23:10:475楼 得分:0
呵呵...刚做过..楼上有程序啦


快速检索

最新资讯
热门点击