当前位置导航:炫浪网>>网络学院>>编程开发>>C++教程>>C++进阶与实例

c++实现键树的源代码

看别人写的键树代码看不懂,就自己写了一个。 博客刚开通,就当开个张,贴一份代码上来。 要下班了,改天再重新把注释说详细点,顺便把 树的过程补上。 #include #include using namespace std; /*因为树结构用的是左孩子-右兄弟,所以定义了移动的方向*/ #define CHILD 1 #define SIBLING 2 #define NOMOVE 3 /* *树结点,左孩子-右兄弟表示法 *把成员都做成public的了,主要是演示一下算法 .

 // test.cpp : Defines the entry point for the console application.
//

#include \"stdafx.h\"
#include <iostream>
#include <queue>
using namespace std;

/*define the movement direction*/
#define CHILD 1
#define SIBLING 2
#define NOMOVE 3

/*
*keyword tree node
*we use a structure left child-right sibling
*to store the tree’s nodes
*/
class knode
{
    public:
        knode()
        {
            c=0;
            child=NULL;
            sibling=NULL;
        }
        knode(int cc,knode* pc, knode* ps)
        {
            c=cc;
            child=pc;
            sibling=ps;
        }
    char c;
    knode * child;
    knode * sibling;
};

/*
*insert pattern to keyword tree
*root is keyword tree’s root node
*str is the string inserted to the tree
*/
void insertKTree(knode* const root,char* str)
{
    knode* troot=root;
    knode* tproot=root; /*save the previous node when move in the tree*/
    troot=root->child;
    int moveDir=NOMOVE;

    /*
    find the matched portion of substring in str as soon as possiable,
    meanwhile,move the pointer str.
    */
    while(troot != NULL)
    {
        if(troot->c == *str) [Page]
        {
            str++;
            tproot=troot;
            troot=troot->child;
            moveDir=CHILD;/*move to child*/
        }
        else
        {
            tproot=troot;
            troot=troot->sibling;
            moveDir=SIBLING; /*move to sibling*/
        }
    }

    /*ready to insert the rest string pointed to by str into the tree*/
    switch(moveDir)
    {
    case NOMOVE: /*tree only has a node(root node)*/
    case CHILD: /*insert node as child*/
        while(*str != ’\\0’)
        {
            tproot->child=new knode(*str,NULL,NULL);
            tproot=tproot->child;

 

共2页 首页 上一页 1 2 下一页 尾页 跳转到
相关内容
赞助商链接