正在加载图片...
,试验目的 1.进一步掌握指针变量,动态变量的含义 2.掌握二叉树的结构特征,以及各种存储结构的特点及使用范围 掌握用指针类型描述,访问二叉树的运算 ,试验内容 1.编写交换以二叉树连表作存储结构的二茬树中所有节点的左右子树的算法 [基本思想]设二叉树的根指针为t,且以二又树连表表示,可以利用一个类型为 seqstack 的指针来实现,且设栈单元包含两个域,一个为data,一个为top, 整个栈容量为 maxsize,当树为非空,将当前的树根节点入栈,同时将当前栈顶当作跟 节点,然后依据当前的根节点是否具有孩子节点来判断是否将其左右指针交换:;在间交 换后的左指针或右指针入栈,这样反复进行,直到栈为空 算法实现] #define null o typedef struct node int data struct node lchild rchild typedef int datatype;/栈元素的数据类型 define maxsize64∥栈可能达到的最大容量 typedef struct i datatype data maxsize; int top; } seqstack/顺序栈类型定义 seqstack*s;∥顺序栈类型指针 bitree *creat∥/建立二叉树 scanf(“&x) if(x==0) t=null: t=malloc(sizeof(bitree)) t->lchild=creato t->rchild=creato return t: void inorder(t)/中序遍历二叉树 bitree *t:一,试验目的 1. 进一步掌握指针变量,动态变量的含义。 2. 掌握二叉树的结构特征,以及各种存储结构的特点及使用范围 3. 掌握用指针类型描述,访问二叉树的运算 二,试验内容 1. 编写交换以二叉树连表作存储结构的二茬树中所有节点的左右子树的算法。 [基本思想]设二叉树的根指针为 t,且以二叉树连表表示,可以利用一个类型为 seqstack 的指针来实现,且设栈单元包含两个域,一个为 data,一个为 top, 整个栈容量为 maxsize,当树为非空,将当前的树根节点入栈,同时将当前栈顶当作跟 节点,然后依据当前的根节点是否具有孩子节点来判断是否将其左右指针交换;在间交 换后的左指针或右指针入栈,这样反复进行,直到栈为空 [算法实现] #define null o typedef struct node { int data; struct node lchild ,rchild; }bitree; typedef int datatype ;//栈元素的数据类型 #define maxsize 64 //栈可能达到的最大容量 typedef struct { datatype data[maxsize]; int top; }seqstack//顺序栈类型定义 seqstack *s;// 顺序栈类型指针 bitree *creat()//建立二叉树 { bitree *t; int x; scanf(“&x); if(x==0) t=null; else { t=malloc(sizeof(bitree)); t->data=x; t->lchild=creat(); t->rchild=creat(); } return t; } void inorder(t)//中序遍历二叉树 bitree *t;
向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有