数据结构-顺序树的创建以及按广义表输出

 1 #include"stdio.h"
 2 #define MaxSize 30
 3 typedef char DataType;
 4 typedef struct TreeNode{
 5     DataType data[MaxSize];
 6     int count;
 7 }BinTree;
 8 int k = 0;
 9 //初始化树
10 void initBinTree(BinTree *t)
11 {
12     for( int i= 0; i< MaxSize; i++)
13     {
14         t->data[i] = ‘#‘;
15     }
16     t->count = 0;
17 }
18 //创建二叉树
19 void creatBinTree(BinTree *t, DataType array[], int index)
20 {
21     DataType ch = array[k++];
22     if( ch == ‘;‘)
23     {
24         return ;
25     }
26     if( ch != ‘#‘ )
27     {
28         t->data[index] = ch;
29         t->count++;
30         creatBinTree(t, array, index*2+1);
31         creatBinTree(t, array, index*2+2);
32     }
33 }
34 //按广义表输出二叉树
35 void printBinTree(BinTree *t, int index)
36 {
37     if(t != NULL)
38     {
39         printf("%c ",t->data[index]);
40         if( t->data[index*2+1] != ‘#‘ || t->data[index*2+2] != ‘#‘ )
41         {
42             printf("(");
43             printBinTree(t, index*2+1);
44             printf(",");
45             printBinTree(t, index*2+2);
46             printf(")");
47         }
48     }
49 }
50 main()
51 {
52     BinTree t;
53     int n;
54     int index = 0;
55     DataType ch[] = {‘A‘,‘B‘,‘C‘,‘#‘,‘#‘,‘E‘,‘#‘,‘#‘,‘F‘,‘G‘,‘#‘,‘#‘,‘H‘,‘#‘,‘#‘,‘;‘};
56     initBinTree(&t);
57     creatBinTree(&t, ch, index);
58     printBinTree(&t, index);
59 }

原文地址:https://www.cnblogs.com/sucker/p/10966517.html

时间: 2024-10-10 20:08:28

数据结构-顺序树的创建以及按广义表输出的相关文章

【数据结构】第5章 数组和广义表

§5.1 数组的定义 多维数组的理解 typedef ElemType Array2[m][n]; //等价于typedef ElemType Array1[n];typedef Array1 Array2[m]; 即一个n维数组类型可以定义为其数据元素为(n-1)维数组类型的一维数组类型. 数组一旦被定义,它的维度和维界就不再改变,因此除了结构的初始化和销毁之外,数组只有存取元素和修改元素值的操作. §5.2数组的顺序表示和实现 多维数组的空间分配,有以列序为主序(FORTRAN)或以行序为主

数据结构习题之多维数组和广义表

第五章 多维数组和广义表 一.基本要求.重点.难点 本章目的是介绍多维数组的逻辑结构特征及其存储方式.特殊矩阵和稀疏矩阵的压缩存储方法.本章重点是熟悉多维数组的存储方式.矩阵的压缩存储方式,难点是稀疏矩阵的压缩存储方示下实现的算法. 二.考核目标.考核要求 1.多维数组,要求达到"理解"层次 1.1多维数组的逻辑特征. 1.2多维数组的顺序存储结构及地址计算方式. 1.3数组是一种随机存取结构的原因. 2.矩阵的压缩存储,要求达到"理解"层次 2.1特殊矩阵和稀疏矩

数据结构--Avl树的创建,插入的递归版本和非递归版本,删除等操作

AVL树本质上还是一棵二叉搜索树,它的特点是: 1.本身首先是一棵二叉搜索树. 2.带有平衡条件:每个结点的左右子树的高度之差的绝对值最多为1(空树的高度为-1). 也就是说,AVL树,本质上是带了平衡功能的二叉查找树(二叉排序树,二叉搜索树). 对Avl树进行相关的操作最重要的是要保持Avl树的平衡条件.即对Avl树进行相关的操作后,要进行相应的旋转操作来恢复Avl树的平衡条件. 对Avl树的插入和删除都可以用递归实现,文中也给出了插入的非递归版本,关键在于要用到栈. 代码如下: #inclu

数据结构 笔记5 多维数据与广义表

多维数组 数组是一种常见的数据类型,由于数组中各元素具有相同的数据类型,并且数据元素的下标一般具有固定的上界和下界. 数组是一种元素个数固定的线性表 数组一般不做插入和删除的操作,因此数组一旦建立,结构中的元素个数和元素间的关系就不再发生变化,所以一般用顺序存储方法来表示数组 由于计算机的内存结构是一维的,所以二位数组一般用行向量,列向量形式表示 二维数组的边界结点(除了开始结点和终端结点除外只有一个直接前趋或者只有一个直接后继),其余结点都有两个直接前趋和两个直接后继 矩阵的压缩存储 由于矩阵

二叉树先序存储广义表输出

#include<stdio.h> #include<stdlib.h> #define maxSize 50 typedef struct Node{ int data[maxSize]; int n; }Sqbtree; void createSqbtree(Sqbtree &L,char pre[],int n, int &S){ char ch =pre[S++]; if(ch == ';') return ; if(ch != '#'){ L.data[n

5-3-行逻辑链接的顺序表(稀疏矩阵)-数组和广义表-第5章-《数据结构》课本源码-严蔚敏吴伟民版

课本源码部分 第5章  数组和广义表 - 行逻辑链接的顺序表(稀疏矩阵) ——<数据结构>-严蔚敏.吴伟民版        源码使用说明  链接??? <数据结构-C语言版>(严蔚敏,吴伟民版)课本源码+习题集解析使用说明        课本源码合辑  链接??? <数据结构>课本源码合辑        习题集全解析  链接??? <数据结构题集>习题解析合辑        本源码引入的文件  链接? Status.h.Scanf.c        相关测试

5-2-三元组顺序表(稀疏矩阵)-数组和广义表-第5章-《数据结构》课本源码-严蔚敏吴伟民版

课本源码部分 第5章  数组和广义表 - 三元组顺序表(稀疏矩阵) ——<数据结构>-严蔚敏.吴伟民版        源码使用说明  链接??? <数据结构-C语言版>(严蔚敏,吴伟民版)课本源码+习题集解析使用说明        课本源码合辑  链接??? <数据结构>课本源码合辑        习题集全解析  链接??? <数据结构题集>习题解析合辑        本源码引入的文件  链接? Status.h.Scanf.c        相关测试数据下

javascript实现数据结构:广义表

原文:javascript实现数据结构:广义表  广义表是线性表的推广.广泛用于人工智能的表处理语言Lisp,把广义表作为基本的数据结构. 广义表一般记作: LS = (a1, a2, ..., an) LS是广义表的名称,n是它的长度,ai可以是单个元素,也可以是广义表,分别称为广义表LS的原子和子表.习惯上,用大写字母表示广义表的名称,小写字母表示原子.当广义表LS非空时,称第一个元素a1为LS的表头,称其余元素组成的表(a2, a3, ..., an)是LS的表尾. 下面列举一些广义表的例

数据结构算法C语言实现(十九)--- 5.5&amp;5.6&amp;5.7广义表

一.简述 传说Lisp的基本数据结构就是广义表,广义表也是具有典型递归属性的数据结构,此外,由于建表要处理字符串,用C语言处理起来也是一脸懵逼.....最后自己还想写一个将广义表还原成字符串的函数,一是使其可视化,而是验证算法5.6.花了不少功夫才写出来(强烈建议自己动手写一写),最后是借助树形结构的角度才找到一个不错的解决办法.按照<数据结构编程实验>的分类,数据结构无非线性结构.树状结构.图结构,可以说树是特殊的图(图的最小生成树),线性表示特殊的树.....扯远了! 二.头文件 补充版字