数据结构顺序查找循环输出比对数值存在问题,输出时重复输出且未输出比对数值5?

作者站长头像
站长
· 阅读数 12

#include <stdio.h>
#include <malloc.h>
#define OK 1
#define ERROR 0
#define TRUE 1
#define FALSE 0
typedef int keytype;
typedef int infotype;
typedef struct
{
    keytype key;
    infotype otherinfo;
}elemtype;

typedef struct
{
    elemtype *R;
    int length;
}sstable;

int inittable(sstable *st)
{
    st->R=(elemtype*)malloc(11*sizeof(elemtype));
    if(!st->R) 
    return ERROR;
    st->length=0;
    return OK;
}
int search_seq(sstable ST,keytype key)
{
    int i;
    ST.R[0].key = key;
    for(i=ST.length;ST.R[i].key!=key;--i)
        printf("比较数值为:%d\n",ST.R[i].key);
    return i;
}
int main()
 {
     sstable ST;
     inittable(&ST);    
     ST.length=10;
     printf("输入10位数(每输入一次按空格):\n");
     for(int i=1;i<=ST.length;i++)
     {
         printf("输入第%d个:\t",i);
         scanf("%d",&ST.R[i].key);
      } 
      keytype key=5;
     search_seq(ST, key);
     printf("查找到下标为%d:",search_seq(ST,key));
    return 0;
}

数据结构顺序查找循环输出比对数值存在问题,输出时重复输出且未输出比对数值5?

回复
1个回答
avatar
test
2024-07-03
     search_seq(ST, key);
  // ^^^^^^^^^^
     printf("查找到下标为%d:",search_seq(ST,key));
  //                         ^^^^^^^^^^

调用了两次,自然还会输出两次。


    for(i=ST.length;ST.R[i].key!=key;--i)
                            // ^^
        printf("比较数值为:%d\n",ST.R[i].key);

不相等才执行循环体(打印),相等就不执行了。

回复
likes
适合作为回答的
  • 经过验证的有效解决办法
  • 自己的经验指引,对解决问题有帮助
  • 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
  • 询问内容细节或回复楼层
  • 与题目无关的内容
  • “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容