首页 | 文章中心 | 下载中心 | 本站特供 | 软硬件结合论坛 | 
您现在的位置: 中国软硬件结合技术网 >> 文章中心 >> 软件技术 >> C++程序设计 >> 正文 用户登录 新用户注册
[推荐]几种数据算法几列子            【字体:
几种数据算法几列子
作者:twin82    文章来源:    点击数:    更新时间:2007-7-4

#include "malloc.h"
#include "stdio.h"
#define ERROR 0
#define OVERFLOW -2
#define OK 1

typedef char TElemType;
typedef int Status;
typedef struct  BiTNode {
      TElemType      data;
      struct BiTNode   *lchild,*rchild; //左右孩子指针
}BiTNode,*BiTree;

Status pnt(TElemType e)
{
 printf(" %c",e);
 return OK;
}

Status PreOrderTraverse(BiTree T, Status(* Visit)(TElemType e)){
  if (T){
     if (Visit(T->data))
        if (PreOrderTraverse(T->lchild,Visit))
            if (PreOrderTraverse(T->rchild,Visit)) 
               return OK;
      return ERROR;
  }else    return OK;
}//PreOrderTraverse

Status InOrderTraverse(BiTree T, Status(* Visit)(TElemType e)){
 if (T){
  if (InOrderTraverse(T->lchild,Visit))
   if (Visit(T->data))
    if (InOrderTraverse(T->rchild,Visit))
                 return OK;
        return ERROR;
    }else    return OK;
}//InOrderTraverse

Status PostOrderTraverse(BiTree T, Status(* Visit)(TElemType e)){
 if (T){
  if (PostOrderTraverse(T->lchild,Visit))
   if (PostOrderTraverse(T->rchild,Visit))
    if (Visit(T->data))   return OK;
  return ERROR;
    }else   return OK;
}//PostOrderTraverse

Status CreateBiTree(BiTree &T)
{   char ch;
 scanf("%c",&ch);
   if (ch=='#') T=NULL;
   else {
    if (!(T=(BiTNode *) malloc(sizeof (BiTNode))))
           return(OVERFLOW);
    T->data = ch ;
       CreateBiTree(T->lchild);
       CreateBiTree(T->rchild);
     }
     return OK;
}//CreateBiTree

void main()
{
    BiTree T;

    CreateBiTree(T);
 printf("\n");
    PreOrderTraverse(T,pnt);
 printf("\n");
    InOrderTraverse(T,pnt);
 printf("\n");
    PostOrderTraverse(T,pnt);
 printf("\n");
}

文章录入:twin82    责任编辑:Polylove 
  • 上一篇文章: 转【C++/OOP 大系】

  • 下一篇文章: C++如何做3D游戏
  • 发表评论】【告诉好友】【打印此文】【关闭窗口
          最新热点       最新推荐       相关文章
  • C++如何做3D游戏

  •   网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)