回 帖 发 新 帖 刷新版面

主题:这个算法哪里出现错误了?请帮忙解决一下!谢谢

这是检测线性表顺序存储中的按内容查找:
#include<stdio.h>
#define MAX 10
typedef struct
{
    int a[MAX];
    int last;
}SeqList;

int Locate(SeqList L,int e)
{
    int i;
    i=0;
    while((i<=L.last)&&(L.a[i]!=e))
        i++;
    if(i<=L.last)
        return(i+1);
    else
        return(-1);
    
}
void main()
{
    SeqList L1;
    int j,b;
    for(j=0;j<MAX;j++)
        scanf("%d",&L1.a[j]);
    printf("b=\n");
    scanf("%d",&b);
    printf("%d\n",Locate(L1,b));//*这里这样输出对吗?可以得到返回值吗?
}
这个运算为什么得出的结果都是-1啊,请各位帮帮忙!谢谢!


回复列表 (共3个回复)

沙发

[quote]
void main()
{
    SeqList L1;
    int j,b;
    for(j=0;j<MAX;j++)
        scanf("%d",&L1.a[j]);[color=FF0000]//建议你初始化链表的同时,也初始化last=MAX,否则比较的时候出错就很正常了!!!!![/color] 
    printf("b=\n");
    scanf("%d",&b);
    printf("%d\n",Locate(L1,b));//*这里这样输出对吗?可以得到返回值吗?
}
[/quote]

板凳


能不能进一步说明,最好是写出来,谢谢啦!

3 楼

#include<stdio.h>
#define MAX  10
typedef struct
{
    int a[MAX];
    int last ;
}SeqList;

int Locate(SeqList L,int e)
{
    int i = 0;

    while((i<L.last)&&(L.a[i]!=e))
        i++;
    if(i<L.last)
        return(i+1);
    else
        return(-1);

}
void main()
{
    SeqList L1;
    int j,b;
    printf("请输入last:\n");
    scanf("%d",&L1.last);
    printf("请输入十个不同的整数:\n");
    for(j=0;j<MAX;j++)
        scanf("%d",&L1.a[j]);
    printf("b=\n");
    scanf("%d",&b);
    printf("%d\n",Locate(L1,b));//可以得到返回值
}

我来回复

您尚未登录,请登录后再回复。点此登录或注册