三木社区

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 415|回复: 0
打印 上一主题 下一主题

C语言数据结构-main6-1.c

[复制链接]

1562

主题

1564

帖子

4904

积分

博士

Rank: 8Rank: 8

积分
4904
跳转到指定楼层
楼主
发表于 2017-9-1 09:16:25 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  1. /* main6-1.c 检验bo6-1.c的主程序,利用条件编译选择数据类型为char或int */
  2. /*#define CHAR 1 /* 字符型 */
  3. #define CHAR 0 /* 整型(二者选一) */
  4. #include"c1.h"
  5. #if CHAR
  6.    typedef char TElemType;
  7.    TElemType Nil=' '; /* 设字符型以空格符为空 */
  8. #else
  9.    typedef int TElemType;
  10.    TElemType Nil=0; /* 设整型以0为空 */
  11. #endif
  12. #include"c6-1.h"
  13. #include"bo6-1.c"

  14. Status visit(TElemType e)
  15. {
  16.    printf("%d ",e);
  17.    return OK;
  18. }

  19. void main()
  20. {
  21.    Status i;
  22.    int j;
  23.    position p;
  24.    TElemType e;
  25.    SqBiTree T,s;
  26.    InitBiTree(T);
  27.    CreateBiTree(T);
  28.    printf("建立二叉树后,树空否?%d(1:是 0:否) 树的深度=%d\n",BiTreeEmpty(T),BiTreeDepth(T));
  29.    i=Root(T,&e);
  30.    if(i)
  31.      printf("二叉树的根为:%d\n",e);
  32.    else
  33.      printf("树空,无根\n");
  34.    printf("层序遍历二叉树:\n");
  35.    LevelOrderTraverse(T,visit);
  36.    printf("中序遍历二叉树:\n");
  37.    InOrderTraverse(T,visit);
  38.    printf("后序遍历二叉树:\n");
  39.    PostOrderTraverse(T,visit);
  40.    printf("请输入待修改结点的层号 本层序号: ");
  41.    scanf("%d%d",&p.level,&p.order);
  42.    e=Value(T,p);
  43.    printf("待修改结点的原值为%d请输入新值: ",e);
  44.    scanf("%d",&e);
  45.    Assign(T,p,e);
  46.    printf("先序遍历二叉树:\n");
  47.    PreOrderTraverse(T,visit);
  48.    printf("结点%d的双亲为%d,左右孩子分别为",e,Parent(T,e));
  49.    printf("%d,%d,左右兄弟分别为",LeftChild(T,e),RightChild(T,e));
  50.    printf("%d,%d\n",LeftSibling(T,e),RightSibling(T,e));
  51.    InitBiTree(s);
  52.    printf("建立右子树为空的树s:\n");
  53.    CreateBiTree(s);
  54.    printf("树s插到树T中,请输入树T中树s的双亲结点 s为左(0)或右(1)子树: ");
  55.    scanf("%d%d",&e,&j);
  56.    InsertChild(T,e,j,s);
  57.    Print(T);
  58.    printf("删除子树,请输入待删除子树根结点的层号 本层序号 左(0)或右(1)子树: ");
  59.    scanf("%d%d%d",&p.level,&p.order,&j);
  60.    DeleteChild(T,p,j);
  61.    Print(T);
  62.    ClearBiTree(T);
  63.    printf("清除二叉树后,树空否?%d(1:是 0:否) 树的深度=%d\n",BiTreeEmpty(T),BiTreeDepth(T));
  64.    i=Root(T,&e);
  65.    if(i)
  66.      printf("二叉树的根为:%d\n",e);
  67.    else
  68.      printf("树空,无根\n");
  69. }
复制代码


回复

使用道具 举报

Archiver|手机版|小黑屋|三木电子社区 ( 辽ICP备11000133号-4 )

辽公网安备 21021702000620号

GMT+8, 2025-5-12 00:10 , Processed in 0.029881 second(s), 22 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表