免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
123
最近访问板块 发新帖
楼主: ypxing
打印 上一主题 下一主题

[C] 二叉平衡树AVL的插入和删除的C实现源码 [复制链接]

论坛徽章:
0
21 [报告]
发表于 2007-12-07 16:34 |只看该作者

回复 #19 ypxing 的帖子

我把你的destroy函数改成下面的形式,以方便测试delete操作,你看没问题吧,然后在main里面就直接调用一下destroy就能测试delete了
发现用20个数据测的时候,能删除17个

  1. void destroyAVL(node* root)
  2. {
  3.   /*
  4.   if (root != NULL)
  5.   {
  6.     destroyAVL(root->left);
  7.     destroyAVL(root->right);
  8.     free(root);
  9.     root=NULL;
  10.   }
  11.   */
  12.   int key;
  13.   while (root)
  14.   {
  15.       key = root->key;
  16.       printf("Delete key %d \n", key);
  17.       root = deleteNode(key, root);
  18.   }
  19. }
复制代码

论坛徽章:
0
22 [报告]
发表于 2007-12-08 12:08 |只看该作者
谢谢, 确实是我的程序的bug
我已经更新了deleteNode函数, 呵呵,
你可以再试试

原帖由 augustusqing 于 2007-12-7 16:34 发表
我把你的destroy函数改成下面的形式,以方便测试delete操作,你看没问题吧,然后在main里面就直接调用一下destroy就能测试delete了
发现用20个数据测的时候,能删除17个

void destroyAVL(node* root)
{
  ...

论坛徽章:
0
23 [报告]
发表于 2007-12-08 12:09 |只看该作者

回复 #22 ypxing 的帖子

哈哈,在等你更新了,^_^

论坛徽章:
0
24 [报告]
发表于 2007-12-08 12:19 |只看该作者
没发现问题了,正常删除到底了

[ 本帖最后由 augustusqing 于 2007-12-10 10:22 编辑 ]

论坛徽章:
0
25 [报告]
发表于 2007-12-08 22:31 |只看该作者
http://www.stanford.edu/~blp/avl/libavl.html/index.html
GNU libavl 2.0.2
libavl is a library in ANSI C for manipulation of various types of binary trees.

论坛徽章:
0
26 [报告]
发表于 2007-12-09 11:11 |只看该作者
佩服一下 呃 我写个rb tree都累的要死了

论坛徽章:
0
27 [报告]
发表于 2009-01-06 19:26 |只看该作者
end-function-deleteNode(int key, node* root)

if (dNode->parent != NULL)
      if (dNode == dNode->parent->left)
        dNode->parent->left = NULL;
      else dNode->parent->right = NULL;
    free(dNode);
    if (root == dNode)
      root = NULL; //root被删除, 避免野指针
    dNode = NULL;
   

这里的if--else,看着不爽。。。。

论坛徽章:
0
28 [报告]
发表于 2009-01-06 21:03 |只看该作者
是啊,这个编码风格实在彪悍
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP