最后一张截屏,空链表的创建和尾插有错误吗

img

img


#include
#include

typedef int elemtype;
typedef struct node *list;
struct node{
elemtype data;
list next;
};

list makelinklist(int g)
{
list head=(list)malloc(sizeof(list)),p,tail;
head->next=NULL;
tail=head;
elemtype i=1,x;
while(scanf("%d",&x)&&i++
{
p->data=x;
tail->next=p;
tail=p;
tail->next=NULL;
}
return head;
}
deallinklist(list linklista,list linklistb)
{

while(linklista->data!=-1)
{
    if(linklista->next->data==linklistb->next->data)
      printf("%d",linklista->next->data);
}

}
int main()
{
list linklista=(list)malloc(sizeof(list));
list linklistb=(list)malloc(sizeof(list));
int m,n;
scanf("%d %d",&m,&n);
linklista=makelinklist(m);
linklistb=makelinklist(n);
deallinklist(linklista,linklistb);
return 0;
}

img

有错误,sizeof(list)是错误的,这只能申请4个字节,因为指针的sizeof结果是4