| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 717 人关注过本帖
标题:求一份以二叉链表为存储结构实现树的存储和输出的代码?!
只看楼主 加入收藏
莹色暮雨
Rank: 1
来 自:四川眉山
等 级:新手上路
帖 子:16
专家分:0
注 册:2012-11-15
结帖率:100%
收藏
已结贴  问题点数:5 回复次数:2 
求一份以二叉链表为存储结构实现树的存储和输出的代码?!
初学者,完全不懂,求一份作参考????
搜索更多相关主题的帖子: 存储 
2012-11-24 11:06
寒风中的细雨
Rank: 17Rank: 17Rank: 17Rank: 17Rank: 17
等 级:贵宾
威 望:66
帖 子:1710
专家分:8645
注 册:2009-9-15
收藏
得分:3 
Lz 自己可以在本版 搜索下
2012-11-24 12:36
凌云飞翔
Rank: 5Rank: 5
来 自:河北
等 级:职业侠客
威 望:6
帖 子:98
专家分:388
注 册:2012-4-7
收藏
得分:3 
程序代码:
  仅供参考

#include  <stdio.h >
#include <stdlib.h>
#define  OVERFLOW  0
#define  OK  1
#define STACK_INIT_SIZE   100
#define  STACKINCREMENT  10
typedef  char SElemType  ;
typedef   int Status   ;
typedef  struct BiTNode
  {   SElemType  data  ;
    struct BiTNode *lchild ,*rchild  ;  //左右孩子指针
  } BiTNode , *BiTree  ;

 
typedef struct {
          BiTree   *base   ;
          BiTree   *top    ;
          int  stacksize  ;
}  SqStack    ;
Status    StackEmpty  (SqStack  s  )
{ if  (s.base==s.top)  return 1;
    else  return 0  ;
} //stackempty
Status  InitStack  (SqStack  &s)
{  s.base=(BiTree   *)malloc (STACK_INIT_SIZE *sizeof (BiTree  ))  ;
    if (!s.base)  exit (OVERFLOW )   ;
     s.top = s.base ;
     s.stacksize =STACK_INIT_SIZE ;
     return  OK  ;
}//initstack
Status  Push (SqStack &s  , BiTree  e  )
{  if (s.top -s.base >=s.stacksize )//栈满,追加存储空间
{   s.base = (BiTree  *) realloc (s.base,(s.stacksize +STACKINCREMENT)
                                                                        *sizeof (BiTree ) )  ;
        if (!s.base) exit  ( OVERFLOW ) ;//存储分配失败
                s.stacksize +=STACKINCREMENT  ;
}
         *s.top++=e  ;
                return  OK  ;
}//push
Status Pop  (SqStack  &s  ,  BiTree   *e)
{ if  (s.top==s.base  ) return  0  ;
  *e =*--s.top ;
  return  OK  ;
}// pop

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

  Status printelement (char e  )
         { printf ("%c",e) ;
   return  1  ;
   }
       
  Status inorderrtaverse  (BiTree  T )
  {    SqStack  s  ;
          InitStack  ( s )  ;
        BiTree p;
          p=T  ;
                  while (p||!StackEmpty  ( s ))
        {
                          if (p)  {  Push (s, p); p=p->lchild  ;  }
                  else
                  {
                           Pop (s,&p) ;
                           if (!printelement(p->data))  return 0 ;
                             p=p->rchild  ;
                  }/*else */
  }//  while
     return  OK ;
}  //  inordertraverse
   main ()
   {   BiTree   T ;
     createBiTree ( T );
  inorderrtaverse  ( T  ) ;
   }     
2012-11-24 13:00
快速回复:求一份以二叉链表为存储结构实现树的存储和输出的代码?!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.025799 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved