小代码 向高手学习基树

 /*****************
 运行 环境:http://www.anycodes.cn/zh/
 内容: 基数树
 
 *******************/
 #include <stdio.h>
#include <stdlib.h>
typedef struct RadixNode {
    char *str;
     struct RadixNode *lchild, *rchild; 
} RadixNode;
void radix_insert(RadixNode *node, char *str)
{
     int i;
     for (i = 0; str[i] != ‘\0‘; i++) {               
          if (str[i] == ‘0‘) {
               if (node->lchild == NULL)
                    node->lchild =(RadixNode*) calloc(sizeof(RadixNode), 1);
               node = node->lchild;               
          } 
          else {
               if (node->rchild == NULL)
                    node->rchild = (RadixNode*)calloc(sizeof(RadixNode), 1);
               node =  node->rchild;
          }               
     }
     node->str = str;
}

void radix_preorder_walk(RadixNode *node)
{
     if (node != NULL) {
          if (node->str != NULL)
               printf("%s\n", node->str);
          radix_preorder_walk(node->lchild);
          radix_preorder_walk(node->rchild);
     }
}

int main(void)
{
     RadixNode *root = (RadixNode*)malloc(sizeof(RadixNode));
     char ss[5][5]={"01","011","101","1010","1011"};
     radix_insert(root, ss[0]); 
     radix_insert(root, ss[1]); 
     radix_insert(root, ss[2]); 
     radix_insert(root, ss[3]); 
     radix_insert(root, ss[4]); 
     radix_preorder_walk(root);
     return 1;
}

原文http://blog.csdn.net/dc_726/article/details/7391988

修改消除了警告与一定编译器造成的错误

				
时间: 2024-08-06 14:49:39

小代码 向高手学习基树的相关文章

小代码 向原文学习 对AVL树的4种情况 用字母标记整理

   /******************  环境:http://anycodes.cn/zh/  AVL  有高度标签    红黑树 更有颜色标记  http://blog.csdn.net/whucyl/article/details/17289841  我们总是以ABC 3个结点为例子 插入元素后C总是不平衡的  LL RR 较为简单   交换后C还是出于下方  LR RL 统一的一句就是  C总提出交换子树,要翻身做了老大.  LL LR与 RR RL是对称的4种情况写了前2种就能写出

小代码 向原文学习 BST 简单的C语言版本

   /********************************  运行环境:http://www.anycodes.cn/zh/  原文:http://blog.csdn.net/u014488381/article/details/41719765/  二叉排序树的查找算法的C代码实现  修改以直接测试  待C++类封装版本  *********************************/ #include <stdio.h> #include <stdlib.h>

java学习中,DVD管理系统纯代码(java 学习中的小记录)

java学习中,DVD管理系统纯代码(java 学习中的小记录)作者:王可利(Star·星星) class DvdMain{ public static void main (String[] args){ DvdMgr dvd = new DvdMgr(); //初始化dvd dvd.initial(); //开始进入切换菜单 dvd.startMenu(); } } 1 class DvdSet { 2 3 //定义三个属性 4 String[] name = new String[50];

算法学习 - 表达树的建立(后缀表达式法),树的先序遍历,中序遍历,后序遍历

表达树就是根据后缀表达式来建立一个二叉树. 这个二叉树的每个叶子节点就是数,真祖先都是操作符. 通过栈来建立的,所以这里也会有很多栈的操作. 树的先序遍历,中序遍历,后序遍历的概念我就不讲了,不会的自行百度,不然也看不懂我的代码. 下面是代码: // // main.cpp // expressionTree // // Created by Alps on 14-7-29. // Copyright (c) 2014年 chen. All rights reserved. // #includ

《代码大全》学习摘要(四)伪代码编程过程

今天阅读的是<代码大全>的第9章--"伪代码编码过程".看罢本章,我对于编程的方式方法又有了新的认识,可谓是我觉得收获最大的一章,决心按书中的方法去自己实践一下. 正如作者在这一章末尾提到的,"这本书的一个目的就是告诉你怎样脱离那种先东拼西凑,然后通过运行来看代码是否工作的怪圈"(就我自己写代码的过程来看,与这种方式非常相似),在没有完全想好类和子程序的具体功能和流程就开始编码的结果就是做出一个勉强能运行的程序,它可能漏洞百出,但你不知道问题究竟出在哪里

决策树学习基决策树学习基本算法

决策树学习基本算法 输入:训练集; ???? 属性集. 过程:函数 1: 生成结点node; 2: if 中样本全属于同一类别 then 3: ????将node标记为类叶结点; return 4: end if 5: if 中样本在上取值相同 then 6: 将node标记为叶结点,其类别标记为中样本数最多的类; return 7: end if 8: 从中选择最优化分属性 9: for 的每一个值 do 10: 为node生成一个分支; 令表示中在上取值为的样本子集; 11:???? if

从零开始--系统深入学习android(实践-让我们开始写代码-Android框架学习-7.通知)

通知 一个通知是一条消息他是显示于你应用程序之外的一个界面中.当你告诉系统要发布一个通知时,它首先作为一个icon出现在通知区域.为了看见通知的细节,用户可以点击通知区域展开一个新的界面.下面让我们来看一下图7-1和图7-2: 图7-1 通知出现在通知区域 图7-2 通知展开后的效果(drawer) 注意:除非特别注明外,本章指的都是NotificationCompat.Builder,它在v4 Support Library中有,正式添加于API Level 15.但有了v4 Support

微信小程序开发:学习笔记[1]——Hello World

微信小程序开发:学习笔记[1]--Hello World 快速开始 1.前往微信公众平台下载微信开发者工具. 地址:https://mp.weixin.qq.com/debug/wxadoc/dev/devtools/download.html 2.打开微信开发者工具,并新建项目 打开微信开发者工具,选择新建小程序项目,我们先不需理解AppID的概念,新建项目时选择无AppID,并取消勾选"建立普通快速启动模板"的选项. 3.在根目录添加代码 1.在根目录创建app.json文件 2.

微信小程序开发:学习笔记[2]——WXML模板

微信小程序开发:学习笔记[2]--WXML模板 快速开始 介绍 WXML 全称是 WeiXin Markup Language,是小程序框架设计的一套标签语言,结合小程序的基础组件.事件系统,可以构建出页面的结构. 打开开发工具的编辑器,在根目录下找到 app.json 文件,双击打开,在 "pages/index/index" 上新增一行 "pages/wxml/index" 保存文件.模拟器刷新后,读者可以在编辑器中找到 pages/wxml/index.wxm