程序出现error C2440,求指教。
程序出现error C2440,求赐教。急
#include <stdio.h>
#include <malloc.h>
#include<iostream>
#include <iomanip>
using std::setw;
using namespace std;
#define NULL 0
typedef int KeyType;
typedef char InfoType[10];
typedef struct node //记录类型
{
KeyType key; //关键字项
InfoType data; //其他数据域
struct node *lchild,*rchild,*next; //左右孩子指针
} BSTNode;
int n;
int InsertBST(BSTNode *&p,KeyType k, InfoType d)
{
if (p==NULL) //原树为空, 新插入的记录为根结点
{
p=(BSTNode *)malloc(sizeof(BSTNode));
p->key=k;
p->data=d;
p->lchild=p->rchild=NULL;
return 1;
}
else if (k==p->key) //树中存在相同关键字的结点,返回0
return 0;
else if (k<p->key)
return InsertBST(p->lchild,k,d); //插入到*p的子树中
else
return InsertBST(p->rchild,k,d); //插入到*p的右子树中
}
BSTNode *CreateBST(KeyType A[], InfoType B[],int n) //返回BST树根结点指针
{
BSTNode *bt=NULL; //初始时bt为空树
int i=0;
while (i<n)
{
InsertBST(bt,A[i],B[i]); //将关键字A[i]插入二叉排序树T中
i++;
}
return bt; //返回建立的二叉排序树的根指针
}
BSTNode *DisBST(BSTNode *&bt)
{
if(bt!=NULL)
{
cout << setw( 9 ) << bt->key<< setw(10)<<bt->data <<endl;
if(bt->lchild!=NULL)
DisBST(bt->lchild);
else if(bt->rchild!=NULL)
DisBST(bt->rchild);
}
return bt;
}
void main()
{
BSTNode *bt,*p,*f;
int n=3;
KeyType a[]={1,50,62};
InfoType b[]={"Wang","Zhang","Zhao"};
bt=CreateBST(a,b,n);
printf("BST:\n");
cout << setw( 9 ) << "Code" << setw(10) << "Surname" <<endl;
DisBST(bt);
printf("\n");
}
------解决方案--------------------
哪一行出错了?
------解决方案--------------------
字符串的赋值需要用strcpy,例如:
strcpy(p->data, d);
------解决方案--------------------
偶遇到类似问题都是用
“每次用/*...*/注释掉不同部分再重新编译,直到定位到具体语法出错的位置。”
的方法解决的。
#include <stdio.h>
#include <malloc.h>
#include<iostream>
#include <iomanip>
using std::setw;
using namespace std;
#define NULL 0
typedef int KeyType;
typedef char InfoType[10];
typedef struct node //记录类型
{
KeyType key; //关键字项
InfoType data; //其他数据域
struct node *lchild,*rchild,*next; //左右孩子指针
} BSTNode;
int n;
int InsertBST(BSTNode *&p,KeyType k, InfoType d)
{
if (p==NULL) //原树为空, 新插入的记录为根结点
{
p=(BSTNode *)malloc(sizeof(BSTNode));
p->key=k;
p->data=d;
p->lchild=p->rchild=NULL;
return 1;
}
else if (k==p->key) //树中存在相同关键字的结点,返回0
return 0;
else if (k<p->key)
return InsertBST(p->lchild,k,d); //插入到*p的子树中
else
return InsertBST(p->rchild,k,d); //插入到*p的右子树中
}
BSTNode *CreateBST(KeyType A[], InfoType B[],int n) //返回BST树根结点指针
{
BSTNode *bt=NULL; //初始时bt为空树
int i=0;
while (i<n)
{
InsertBST(bt,A[i],B[i]); //将关键字A[i]插入二叉排序树T中
i++;
}
return bt; //返回建立的二叉排序树的根指针
}
BSTNode *DisBST(BSTNode *&bt)
{
if(bt!=NULL)
{
cout << setw( 9 ) << bt->key<< setw(10)<<bt->data <<endl;
if(bt->lchild!=NULL)
DisBST(bt->lchild);
else if(bt->rchild!=NULL)
DisBST(bt->rchild);
}
return bt;
}
void main()
{
BSTNode *bt,*p,*f;
int n=3;
KeyType a[]={1,50,62};
InfoType b[]={"Wang","Zhang","Zhao"};
bt=CreateBST(a,b,n);
printf("BST:\n");
cout << setw( 9 ) << "Code" << setw(10) << "Surname" <<endl;
DisBST(bt);
printf("\n");
}
------解决方案--------------------
哪一行出错了?
------解决方案--------------------
字符串的赋值需要用strcpy,例如:
strcpy(p->data, d);
------解决方案--------------------
偶遇到类似问题都是用
“每次用/*...*/注释掉不同部分再重新编译,直到定位到具体语法出错的位置。”
的方法解决的。