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;
}


图片说明

感觉题主很像我刚学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;
}

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

注意你的大小写List list

发现两个问题吧,
一,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:因为刚好要下载资源没分数,所以过来看看能不能挣点分数,还请采纳哈。

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

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

i = tb1->length-1;

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

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

声明时使用List list

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

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

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

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

初步观察这个问题是在列表里查找指定的数。然后在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];
}

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

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

typedef 定义放结构体后面