请问我这是哪里错了呀,dev-c输出一大堆垃圾,vc++6.0没有输出

 这是线性表顺序存储的,求救,指出错误并改正,谢谢

初步判断是输出函数PrintSqList出错,但是书上就是这么写,不懂啊

#include<stdio.h>
#include<stdlib.h>
#define MaxSize 50
typedef char ElemType;


typedef struct
{
	ElemType data[MaxSize];
	int length;
}SqList;


void InitSqList(SqList * &L)
{
	L=(SqList *)malloc(sizeof(SqList));
	L->length=0;
}


void CreateList(SqList * &L,ElemType a[],int n)
{
	L=(SqList *)malloc(sizeof(SqList));
	for(int i=0;i<n;i++)
	{
		L->data[i]=a[i];
		L->length++;
	}
}


void PrintList(SqList *L)
{
	for(int i=0;i<L->length;i++)
	{
		printf("%c",L->data[i]);
	}
	printf("\n");
}


int main()
{
	SqList *h;
	int n=6;
	ElemType a[]={'m','i','k','a','s','a'};
	CreateList(h,a,n);
	PrintList(h);
}

 

void InitSqList(SqList * &L)

这个初始化你没调用,所以length没有初始化