初学数据结构的树,编了很久但依然是显示这两个错误 不知道原因,求大佬赐教...
C2601 “main”: 本地函数定义是非法的
错误 C1075 “{”: 未找到匹配令牌
程序代码如下:#include
#include
#define MaxSize 50
typedef int...初学数据结构的树,编了很久但依然是显示这两个错误 不知道原因,求大佬赐教...
C2601 “main”: 本地函数定义是非法的
错误 C1075 “{”: 未找到匹配令牌
程序代码如下:#include
#include
#define MaxSize 50
typedef int ElemType;
typedef struct node
{
ElemType data;
struct node *lchild, *rchild;
} BTNode;
void CreateBTNode(BTNode*&b,char*str)
{
BTNode *St[MaxSize], *p;
int top = -1, k , j = 0;
char ch;
b = NULL; //建立的二叉链初始时为空
ch = str[j];
while (ch != '\0') //str未扫描完时循环
{
switch (ch)
{
case '(': top++; St[top] = p; k = 1; break; //可能有左孩子结点,进栈
case ')': top--; break;
case ',': k = 2; break; //后面为右孩子结点
default: //遇到结点值
p = (BTNode *)malloc(sizeof(BTNode));
p->data = ch; p->lchild = p->rchild = NULL;
if (b == NULL) //p为二叉树的根结点
b = p;
else //已建立二叉树根结点
{
switch (k)
{
case 1: St[top]->lchild = p; break;
case 2: St[top]->rchild = p; break;
}
}
}
j++; ch = str[j]; //继续扫描str
}
}
BTNode *FindNode(BTNode *b,ElemType x)
{
BTNode *p;
if (b == NULL) return NULL;
else if (b->data == x) return b;
else
{
p = FindNode(b->lchild,x);
if (p != NULL) return p;
else return FindNode(b->rchild,x);
}
}
void DestroyBT(BTNode *&b)
{
if (b == NULL) return;
else
{
DestroyBT(b->lchild);
DestroyBT(b->rchild);
free(b); //剩下一个结点*b,直接释放
}
}
int BTNodeDepth(BTNode *b)
{
int lchilddep, rchilddep;
if (b == NULL) return(0); //空树的高度为0
else
{
lchilddep = BTNodeDepth(b->lchild);
//求左子树的高度为lchilddep
rchilddep = BTNodeDepth(b->rchild);
//求右子树的高度为rchilddep
return(lchilddep > rchilddep) ? (lchilddep + 1) : (rchilddep + 1);
}
}
int DispBTNode(BTNode *b)
{
if (b != NULL)
{
printf("%c",b->data);
if (b->lchild != NULL || b->rchild != NULL)
{
printf("(");
DispBTNode(b->lchild);
if (b->rchild != NULL) printf(",");
DispBTNode(b->rchild);
printf(")");
}
}
}
int main()
{
BTNode *b = NULL;
char*str=NULL;
int deepth, num = 0;
int x;
printf("请输入生成树,#结束\n");
CreateBTNode(b, str);
printf("以括号表示法输出的二叉树为:%d\n", DispBTNode(b));
printf("树的高度为:%d/n", BTNodeDepth(b));
printf("请输入x作为查找结点:");
scanf("%d", &x);
printf("阈值为x的结点为:%d/n", FindNode(b, x));
DestroyBT(b);
return 0;
}
在此谢谢了orz展开 |
|