c语言魔术师发牌问题怎么都不行,没用函数,都在主函数内,有知道的吗

#include<stdio.h>
#include<stdlib.h>
typedef struct list
{
int data;
struct list *next;
}list;

int i,j;
int main()
{

for(i=1;i<14;i++)
{

p=(list *)malloc(sizeof(list));
p->data=0;
if(h==NULL)
h=p;
else
{
    l->next=p;
}
l=p;

}
p->next=h;
p=h;
for(i=1;i<14;i++)
{
p->data=i;
for(j=0;j<=i;j++)
{
p=p->next;
if(p->data!=0)
j--;
}
}
p=h;
for(i=0;i<13;i++)
{
printf("黑桃%d,",p->data);
p=p->next;
}
return 0;
}

你的p,h,l这些符号都没有对应声明?

p->next=NULL;//不是等于h