数据结构高手,或者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);
那需要怎么改呢,麻烦改一下,谢谢
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;
修改如下:
函数声明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语言,计算两个日期之间的天数,不知道我的算法到底哪里错了,运行结果是错误的,求大神帮忙看看