数据结构问题求解

来源:百度知道 编辑:UC知道 时间:2024/05/24 07:58:08
【设计目的】

1、熟练掌握二叉树的结构特性,熟悉二叉树的各种存储结构的特点及适用范围;

2、掌握二叉树的先序、中序、后序三种周游的算法实现。

【 设计内容 】

对任意给定的二叉树(顶点数自定)建立它的二叉链表存贮结构,并利用栈的五种基本运算(置空栈、进栈、出栈、取栈顶元素、判栈空)实现二叉树的先序、中序、后序三种遍历,输出三种遍历的结果。

【 设计要求 】

1、写出系统需求分析,并建模。

2、画出各种遍历的图示。

3、编程实现,界面友好。

4、输出各种遍历的结果。
请用C语言实现算法。小女子感激不胜感激!请运行试下不要错的!下面程序有18处错误!麻烦作者再修改下!

调试好了编译器之间有区别,再有问题就是编译器的,你再试一下。
#include <stdio.h>
#include <stdlib.h>
#define STACK_MAX_SIZE 30
#define QUEUE_MAX_SIZE 30
#ifndef elemType
typedef char elemType;
#endif
/************************************************************************/
/* 以下是关于二叉树操作的11个简单算法 */
/************************************************************************/
struct BTreeNode{
elemType data;
struct BTreeNode *left;
struct BTreeNode *right;
};

/* 1.初始化二叉树 */
void initBTree(struct BTreeNode* *bt)
{
*bt = NULL;
return;
}

/* 2.建立二叉树(根据a所指向的二叉树广义表字符串建立) */
void createBTree(struct BTreeNode* *bt, char *a)
{
struct BTreeNode *p;
struct BTreeNode *s[STACK_MAX_SIZE];/* 定义s数组为存储根结点指针的栈使用 */
int top = -1; /* 定义top作为s栈的栈顶指针,初值为-1,表示空栈 */
int k; /* 用k作为处理结点的左子树和右子树,k = 1处理左子树,k = 2处理右子树 */
int i = 0; /* 用i扫描数组a中存储的二叉树广义表字符串,初值为0 */
*bt = NULL