数据结构查找这个程序哪里有问题,main函数第一个printf可以正确输出,其余的不行

#include<stdio.h>
#include<stdlib.h>
typedef struct
{
    int key;
    float weight;
}elemtype;
typedef struct{
    elemtype *elem;
    int length;
}sstable;
#define overflow -2
#define max 5
#define false 0

typedef int keytype;
typedef elemtype bitelemtype;
typedef struct bitnode
{
bitelemtype data;
bitnode *lchild;
bitnode *rchild;
}bitnode;
typedef bitnode *bitree;
int eq(int a,int b)
{
    if (a==b)return 1;
    else return 0;
}
int searchseq(sstable st,keytype key)
{ int i;
    st.elem[0].key=key;
    for(i=st.length;!eq(st.elem[i].key,key);i--);
    return i;
}
int lt(int a,int b)
{
    if(a<b) return 0;
    else return 1;
}
int searchbin(sstable st,keytype key){
    int low,high,mid;
    low=1;high=st.length;
    while(low<=high)
    {
        mid=(low+high)/2;
        if(eq(key,st.elem[mid].key))return mid;
        else if(lt(key,st.elem[mid].key))high=mid-1;
        else low=mid+1;
    }
    return 0;
}
bitree searchbit1(bitree t,keytype key)
{if(!t||eq(key,t->data.key))return(t);
else if (lt(key,t->data.key)) return(searchbit1(t->lchild,key));
else return(searchbit1(t->rchild,key));
}
int create(sstable &t,int n)
{
    int i,a;
    float b;
    t.elem=(elemtype*)malloc((n+1)*sizeof(elemtype));
    if(!(t.elem))
    exit(overflow);
    for(t.length=0,i=1;i<=n;i++)
    {
        scanf("%d,%f",&a,&b);
        t.elem[i].key=a;
        t.elem[i].weight=b;
        t.length++;
    }
}
int searchbit2(bitree bst,keytype key,bitree f,bitree p)
{
    if(!bst)
    {
        p=f;
        return false;
    }
    else if(eq(key,bst->data.key))
    {
        p=bst;
        return true;
    }
    else if(lt(key,bst->data.key))
    return searchbit2(bst->lchild,key,bst,p);
    else return searchbit2(bst->rchild,key,bst,p);
 } 
int insertbit(bitree &bst,elemtype e)
{
    bitree p,s;
    if(!searchbit2(bst,e.key,NULL,p))
    {
        s=(bitree)malloc(sizeof(bitnode));
        s->data=e;
        s->lchild=s->rchild=NULL;
        if(!p)
        bst=s;
        else if(lt(e.key,p->data.key))
        p->lchild=s;
        else p->rchild=s;
        return 1;
    }
    else return false;
};
int createbitree(bitree &bst,sstable t)
{
    int i;
    bst=NULL;
    if(t.length)
    {
        for(i=1;i<=t.length;i++)
        insertbit(bst,t.elem[i]);
    }
    return 1;
}
int main()
{
    sstable t;
    bitree bst;
    keytype key;
    create(t,max);
    scanf("%d",&key);
    searchseq(t,key);
    printf("%d",searchseq(t,key));
    searchbin(t,key);
    printf("%d",searchbin(t,key));
    createbitree(bst,t);
    searchbit1(bst,key)==NULL?printf("不 在"):printf("zai");
    return 0;
}

参考GPT和自己的思路:

问题在于函数调用searchseq(t,key)和searchbin(t,key)并没有将它们的返回值赋值给任何变量或者打印输出,而是直接跟在函数后面单独调用了printf函数。正确的做法是将它们的返回值赋值给变量,然后再打印输出。例如:

int seq_index = searchseq(t,key);
printf("%d",seq_index);

int bin_index = searchbin(t,key);
printf("%d",bin_index);

这样就可以正确输出查找结果了。