|
我的数据结构设计性实验选的是“动态查找表”。我今天做了这设计性实验,遇到个奇怪的问题,就是无论如何,“插入”一定成功(原本应该是:表中没有这个元素才能插入)。然后在查找时,查找一定不成功。我看我的“插入”和“查找”一定出问题了,但是又检查不出问题在哪里。麻烦各位高手帮我看看,究竟我问题在哪里呢?谢谢!
int SearchDSTable(BiTree *DT,int key)/*在根结点指针为DT的二叉排序树里查找关键字为key的结点。若找到,则返回key的值,否则返回0*/
{
int status;
if(!DT) {status=0;return status;}//空树返回0(即查找失败)
if(DT->key==key){status=key;return status;}//根结点即找到,查找成功,返回key值
if(DT->key>key){status=SearchDSTable(DT->lchild,key);return status;}//根结点关键字比key大,则在左子树找
if(DT->key<key){status=SearchDSTable(DT->rchild,key);return status;}//根结点关键字比key小,则在右子树找
return status;
}
int InsertDSTable(BiTree *DT,int key)/*若二叉排序树里没有关键字为key的结点,则在二叉排序树里插入一结点,使它关键字为key,并返回1;若二叉排序树里已有关键字为key的结点,则返回0*/
{ int status;
if(!DT)
{ DT=(struct BiTree*)malloc(sizeof(struct BiTree));
DT->key=key;
DT->lchild=NULL;
DT->rchild=NULL;
status=1;return status;}//空子树的情况
if(DT->key==key)
{ status=0;return status;}
if(DT->key>key)
{status=InsertDSTable(DT->lchild,key);return status;}
if(DT->key<key)
{ status=InsertDSTable(DT->rchild,key);return status;}
return status;
}
我的那个“动态查找表”是储存在一棵二叉排序树里。二叉树的结点类型定义为:
struct BiTree
{ int key;
BiTree *lchild,*rchild;
}; |
|