qq_39087005
qq_39087005
2018-07-05 14:17
采纳率: 100%
浏览 1.9k
已采纳

c语言“结构体”一直报错

按照网课输入下列代码,一直报错。
看起来应该是 结构体 部分有错
但是网课的代码就这么写的……
求问大家怎么修改!
#include
typedef struct Lnode *List;
struct Lnode{
int a[100];
int length;
};
int sequentialSearch(list tb1,int k);
int main(void)
{
int n,key;
int a[100];
scanf("%d",&n);
for(int i = 0 ; i < n ; i++)
scanf("%d",&a[i]);
scanf("%d",&key);
printf("%d "sequentialSearch(a,key));
}
int sequentialSearch(list tb1,int k){
int i;
tb1->a[0] = k;
for(i = tb1->length; &&tb1->a[i] != k;i--)
;
return i;
}


图片说明

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

16条回答 默认 最新

  • Misszhoudandan
    “编程”中的翠翠 2018-07-05 15:37
    已采纳

    感觉题主很像我刚学C语言的时候,有问题不知该怎么办
    下面是我的解决方案

     //头文件没有包
    #include <stdio.h>
    typedef struct Lnode List;
    //你这里typedef 类型重定义为 List 后面用的是list
    struct Lnode{
      int a[100];
      int length;
    
    };
    int sequentialSearch(List* tb1,int k);
    int main(void)
    {
      int n,key;
      scanf("%d",&n);
      //定义一个 List
      List tb1;
    
      //输入你要查找的值
      scanf("%d",&key);
    
      for(int i = 0 ; i < n ; i++)
      {
        //这块应该是循环输入
        scanf("%d",&(tb1.a[i]));
      }
    
      //1.这里""后面缺少,
      //2.函数参数类型为List类型
      printf("%d ",sequentialSearch(&tb1,key));
    } 
    
    int sequentialSearch(List* tb1,int k){
      int i;
      tb1->a[0] = k;
      for(i = tb1->length; i > 0 &&tb1->a[i] != k;i--)
        ;
      return i;
    }
    
    
    点赞 评论
  • baij1230
    baij1230 2018-07-05 14:41

    main 是有类型的,是不是要有返回值呢?

    点赞 评论
  • qq_33123007
    qq_33123007 2018-07-05 14:50

    注意你的大小写List list

    点赞 评论
  • ergergwerg
    逍遥无崖子 2018-07-05 14:53

    发现两个问题吧,
    一,include 后面没有要包含的文件,空的一个include也是有问题的。
    二,在结构体定义之前,就先typedef这个结构体,所以编译器不知道这里tepydef的是个啥,报的未声明的错误。修改如下:
    //#include //或者删除
    struct Lnode{
    int a[100];
    int length;
    };
    typedef struct Lnode *List;
    //或者
    typedef struct Lnode{
    int a[100];
    int length;
    }*List;
    这个两个修改应该都行,你试试。
    PS:因为刚好要下载资源没分数,所以过来看看能不能挣点分数,还请采纳哈。

    点赞 评论
  • ergergwerg
    逍遥无崖子 2018-07-05 14:56

    二楼说的你写错了大小写字母,也是问题,看这个编译报错,应该就是这个大小写。

    点赞 评论
  • wqcvafly
    wqcvafly 2018-07-05 15:00

    修改如下:
    typedef struct Lnode{
    int a[100];
    int length;
    }Lnode, *List;

    i = tb1->length-1;

    点赞 评论
  • weixin_38305344
    weixin_38305344 2018-07-06 00:59

    1.结构体定义要在使用前2.注意大小写的问题。定义的是List,声明时应使用List list

    点赞 评论
  • u011399472
    行啊呼吸急促 2018-07-06 01:02

    你一开始就用typedef声明结构,一开始不能用typedef声明结构

    点赞 评论
  • weixin_42104164
    EGSec 2018-07-06 01:34

    声明时使用List list

    点赞 评论
  • qq_28246867
    qq_28246867 2018-07-06 02:30

    1.结构体定义要在使用前2.注意大小写的问题。定义的是List,声明时应使用List list 3.。。。。

    点赞 评论
  • jieisme
    basecoding 2018-07-06 03:29

    typedef struct Lnode *List;
    struct Lnode{
    int a[100];
    int length;
    };

    -->
    typedef struct Lnode List;
    struct Lnode{
    int a[100];
    int length;
    }
    *list**;

    点赞 评论
  • jieisme
    basecoding 2018-07-06 03:30

    很久没有加CSDN了,版面变化有点大。我都不会用了,字体加粗变成了**号。
    上面的*list* -> list,

    点赞 评论
  • cjs978106963
    cjs978106963 2018-07-06 05:37

    初步观察这个问题是在列表里查找指定的数。然后在main里输出。我写了个自己考虑的方法。
    #include
    typedef struct Lnode List;
    struct Lnode{
    int a[100];
    int length;
    };
    int sequentialSearch(List tb1,int k);
    int main(void)
    {
    struct Lnode tb1;
    int i,n,key;
    scanf("%d",&n);
    for(i=0;i<n;i++)
    {
    scanf("%d",&(tb1.a[i]));
    }
    tb1.length=n;
    scanf("%d",&key);
    printf("\n\n%d\n",sequentialSearch(tb1,key));
    return 0;
    }
    int sequentialSearch(List tb1,int k)
    {
    int i;
    for(i=0;i==k&&i<(tb1.length);i++);
    return tb1.a[i];
    }

    点赞 评论
  • qq_42011242
    冬霁i 2018-07-06 06:52

    一是缺少了头文件,二是typedef struct Lnode List中 List跟你下面用的list不一样。

    点赞 评论
  • zhenjun_ma
    zhenjun_ma 2018-07-06 08:18

    typedef struct Lnode *List;
    1、typedef是重定义,不是定义变量的;
    2、List重复,注意结构图名称和变量名称不能重复;

    点赞 评论
  • xql2008
    xql2008 2018-07-06 08:33

    typedef 定义放结构体后面

    点赞 评论

相关推荐