首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

二叉查找树

2012-08-08 
求助 二叉查找树C/C++ code//SearchTree.htypedef int ElementType#ifndef _TREE_H_#define _TREE_H_stru

求助 二叉查找树

C/C++ code
//SearchTree.htypedef int ElementType;#ifndef _TREE_H_#define _TREE_H_struct TreeNode;typedef struct TreeNode* Position;typedef struct TreeNode* SearchTree;SearchTree MakeEmpty( SearchTree T );Position Find( ElementType X, SearchTree T );Position FindMin( SearchTree T );Position FindMax( SearchTree T );SearchTree Insert( ElementType X, SearchTree T );SearchTree Delete( ElementType X, SearchTree T );ElementType Retrieve( Position P );#endif


C/C++ code
//SearchTree.c#include "SearchTree.h"#include <stdio.h>#include <stdlib.h>struct TreeNode{    ElementType Element;    SearchTree Left;    SearchTree Right;};SearchTree MakeEmpty( SearchTree T ){    if( T != NULL )    {        MakeEmpty( T->Left );        MakeEmpty( T->Right );        free(T);    }    return NULL;}Position Find( ElementType X, SearchTree T){    if( T == NULL )        return NULL;    if( X < T->Element )        return Find( X, T->Left );    else if( X > T->Element )        return Find( X, T->Right );    else        return T;}Position FindMin( SearchTree T ){    if( T == NULL )        return NULL;    else if( T->Left == NULL )        return T;    else        return FindMin( T->Left);}Position FindMax( SearchTree T ){    if( T == NULL )        return NULL;    else if( T->Right == NULL )        return T;    else        return FindMax( T->Right);}SearchTree Insert( ElementType X, SearchTree T ){    if(T == NULL)    {        T = (SearchTree)malloc( sizeof( struct TreeNode ) );        if( T == NULL)            printf("Malloc error!\n");        else        {            T->Element = X;            T->Left = T->Right = NULL;        }    }    else if( X < T->Element )        T->Left = Insert( X, T->Left );    else if( X > T->Element )        T->Right = Insert( X, T->Right );    return T;}SearchTree Delete( ElementType X, SearchTree T ){    Position TmpCell;    if( T == NULL )        printf( " Element not found!\n" );    else if( X < T->Element )        T->Left = Delete( X, T->Left );    else if( X > T->Element )        T->Right = Delete( X, T->Right );    else if( T->Left && T->Right )    {        TmpCell = FindMin( T->Right );        T->Element = TmpCell->Element;        T->Right = Delete( T->Element, T->Right );    }    else    {        TmpCell = T;        if( T->Left == NULL)            T = T->Right;        else if( T->Right == NULL)            T = T->Left;        free( TmpCell );    }    return T;}



C/C++ code
//main.c#include "SearchTree.h"#include <stdio.h>#include <stdlib.h>int main(){    SearchTree t1 = NULL;    Position pmax, pmin;    t1 = MakeEmpty( t1 );    t1 = Insert( 1, t1 );    t1 = Insert( 2, t1 );    t1 = Insert( 6, t1 );    t1 = Insert( 4, t1 );    pmax = FindMax( t1 );    pmin = FindMin( t1 );    printf( "pmax = %d\n", pmax->Element );    printf( "pmin = %d\n", pmin->Element );    return 0;}


编译出错
error C2037: left of 'Element' specifies undefined struct/union 'TreeNode'

这是怎么回事

[解决办法]
试把以下代码从SearchTree.c
struct TreeNode
{
ElementType Element;
SearchTree Left;
SearchTree Right;
};
移到SearchTree.h

热点排行
Bad Request.