数据结构高手,或者C语言告诉,看看哪里错了,编译不过呀,显示有很多错误

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据结构高手,或者C语言告诉,看看哪里错了,编译不过呀,显示有很多错误相关的知识,希望对你有一定的参考价值。

#include<iostream>
using namespace std;
#include<stdio.h>

//1、定义二叉树结构:
typedef struct BiTNode
int data;
struct BiTNode *lChild, *rChild;
BiTNode, *BiTree;
#define BSTMAXSIZE 6

//2、变量说明及赋初值:
int i, lData, rData;
int KeyList[BSTMAXSIZE] = 56,64,92,80,88,75; // 关键字的值
BiTNode BSTNode[BSTMAXSIZE], *BSTree, *p; // 定义静态二叉树各结点,根
// 指针,辅助指针
BSTNode[0].data = KeyList[0];
BSTNode[0].lChild = NULL;
BSTNode[0].rChild = NULL;
BSTree = &BSTNode[0]; // 树根

//3、在二叉排序树中依次插入新结点
for(i=1; i<BSTMAXSIZE; i++)

BSTNode[i].data = KeyList[i]; // 节点赋值
BSTNode[i].lChild = NULL;
BSTNode[i].rChild = NULL;

p = BSTree;
while (1==1)

if (BSTNode[i].data < p->data)

if (p->lChild != NULL)
p = p->lChild;
else
p->lChild = &BSTNode[i]; break;

if (BSTNode[i].data > p->data)

if (p->rChild != NULL)
p = p->rChild;
else
p->rChild = &BSTNode[i]; break;

if (BSTNode[i].data == p->data)
break;



Status SearchBST(BiTree T,KeyType key,BiTree f,BiTree &p)

if(!T)

p=f;
return FALSE;

else if EQ(key,T->data.key)
p=T;return TRUE;
else if LT(key,T->data.key) return SearchBST(T->lchild,key,T,p);
else return SearchBST(T->rChild,key,T,p);

Status InsertBST(BiTree &T,ElemType e)

if(!SearchBST(T,e.key,NULL,p)

s=(BiTree)malloc(sizeof (BiTNode));
s->data=e;s->lchild=s->rchild=NULL;
if (!p)T=s;
else if LT(e.key,p->data.key)p->lChild=s;
else p->rChild=s;
return TRUE;

else return FALSE;


//4、显示结果
void main()
for (i=0; i<BSTMAXSIZE; i++)

lData = rData = 0;
if (!BSTNode[i].lChild==0) lData = BSTNode[i].lChild->data;
if (!BSTNode[i].rChild==0) rData = BSTNode[i].rChild->data;
printf("%6x: data=%d, l=%02d[%6x], r=%02d[%6x]\n",
&BSTNode[i], BSTNode[i].data, lData, BSTNode[i].lChild, rData, BSTNode[i].rChild);


那需要怎么改呢,麻烦改一下,谢谢

1, 代码不全
2, 代码从 //2、变量说明及赋初值:到 //3、在二叉排序树中依次插入新结点
之间应该是在一个函数体内,即大括号内。
3, 函数 Status InsertBST 和 Status SearchBST 没有看到类型Status 的定义追问

那怎么修改呢,帮忙修改一下把,谢谢

追答

其它代码呢?不会就这些吧。

把暂时没有用的先屏蔽,代码如下 :
#include
using namespace std;
#include

//1、定义二叉树结构:
typedef struct BiTNode
int data;
struct BiTNode *lChild, *rChild;
BiTNode, *BiTree;
#define BSTMAXSIZE 6

//2、变量说明及赋初值:

int i, lData, rData;
int KeyList[BSTMAXSIZE] = 56,64,92,80,88,75; // 关键字的值
BiTNode BSTNode[BSTMAXSIZE], *BSTree, *p; // 定义静态二叉树各结点,根
// 指针,辅助指针
void init()

BSTNode[0].data = KeyList[0];
BSTNode[0].lChild = NULL;
BSTNode[0].rChild = NULL;
BSTree = &BSTNode[0]; // 树根

//3、在二叉排序树中依次插入新结点
for(i=1; idata)

if (p->lChild != NULL)
p = p->lChild;
else
p->lChild = &BSTNode[i]; break;

if (BSTNode[i].data > p->data)

if (p->rChild != NULL)
p = p->rChild;
else
p->rChild = &BSTNode[i]; break;

if (BSTNode[i].data == p->data)
break;



//4、显示结果
void main()

init();

for (i=0; idata;
if (!BSTNode[i].rChild==0) rData = BSTNode[i].rChild->data;
printf("%6x: data=%d, l=%02d[%6x], r=%02d[%6x]\n",
&BSTNode[i], BSTNode[i].data, lData, BSTNode[i].lChild, rData, BSTNode[i].rChild);

追问

就是这些呀,

追答

已经给你修改了,你试试。

参考技术A 昨天就说了你的//2,//3那两大段代码都没有写在一个函数里

c语言问题。我编的。初学函数。略懂指针。编了以下程序不知错在哪里。求高手帮忙

定义一个函数,功能是计算n个学生的成绩中,高于平均成绩的人数,并作为函数值。用主函数来调用它,统计50个学生成绩中,高于平均成绩的有多少人?
#include<stdio.h>

main()

int fun();
int i,j,num;
float s[5][10];
for(i=0;i<5;i++)
for(j=0;j<10;j++)
scanf("%f",&s[i][j]);
num=fun(s[5]);
printf("%d",num);
getch();

int fun(float x[5][10])

int i,j;
int num=0,a,s=0;
for(i=0;i<5;i++)
for(j=0;j<10;j++)
s+=x[i][j];
a=s/50;
for(i=0;i<5;i++)
for(j=0;j<10;j++)
if(x[i][j]>a)
num++;
return num;

错误主要有二种:一是函数声明时,没有参数。函数调用时参数使用错误,应该传地址否则无法传递数组。二是类型不匹配,不同类型运算C会自动隐式转换。如5/9的结果是0;
修改如下:
函数声明int fun();改成:int fun(float x[5][10]));
函数调用num=fun(s[5]);改成:num=fun(s);
int num=0,a,s=0;改成:int num=0; float a,s=0;
参考技术A 函数声明要写在main函数外面
即int fun();不能放在main函数中
参考技术B 你的a,b声明的大小是100x81,但在tra函数中,你又把它们当成m x n的二维数组来处理,当然出错了

以上是关于数据结构高手,或者C语言告诉,看看哪里错了,编译不过呀,显示有很多错误的主要内容,如果未能解决你的问题,请参考以下文章

请C语言高手告诉我我错在哪里?

简单C语言,求回答..................(告诉我哪里错了)

关于c语言的问题,高手都进来看看,分高很哦!!!

急求助,C语言,计算两个日期之间的天数,不知道我的算法到底哪里错了,运行结果是错误的,求大神帮忙看看

ASP.NET编译成功后,为啥有些功能不会执行?麻烦高手解答!

\\请问vb哪里不如c好?我怎么搞不明白?高手指点!\\