线性表有关问题

线性表问题
#include <stdio.h> 
#include <stdlib.h>

//以下为函数运行结果状态代码 

#define TRUE 1
#define FALSE 0
#define OK 1 
#define ERROR 0 
#define INFEASIBLE -1 
#define OVERFLOW -2 

#define LIST_INIT_SIZE 5 //线性表存储空间的初始分配量 
#define LISTINCREMENT 1 //线性表存储空间分配增量 

typedef int Status; //函数类型,其值为为函数结果状态代码 

typedef int ElemType; //假设数据元素为整型 

typedef struct 

  ElemType *elem; //存储空间基址 
  int length; //当前长度 
  int listsize; //当前分配的存储容量 
}Sqlist; 
//实现线性表的顺序存储结构的类型定义

static Sqlist L;//为了引用方便,定义为全局变量
static ElemType element;

///////////////////////////////////////
//函数名:InitList()
//参数:SqList L
//初始条件:无
//功能:构造一个空线性表
//返回值:存储分配失败:OVERFLOW
// 存储分配成功:OK
///////////////////////////////////////
Status InitList(Sqlist L)
{
  L.elem=(ElemType*)malloc(LIST_INIT_SIZE*sizeof(ElemType));为什么这个地方根本就没有分配内存呢?我后面取L.listsize值的时候都是为0!求解!!!
printf("成功");
  if(L.elem==NULL)
exit(OVERFLOW);
  else
  {
  L.length=0;
  L.listsize=LISTINCREMENT;
  return OK;
  }
}
void main()
{
int i=0;int *p;
Status InitList(Sqlist L);
L.elem=&i;p=L.elem;
printf("输出:%d ",L.listsize);
for(i=0;i<L.listsize;i++)
{
  L.elem=L.elem+1;
  (L.elem)=&i;
  printf("b");
}
printf("aaaaaaa");
for(i=0;i<L.listsize;i++)
{
printf("%d ",*(p));
}
}

------解决方案--------------------
C/C++ code
Status InitList(Sqlist L)
{
  L.elem=(ElemType*)malloc(LIST_INIT_SIZE*sizeof(ElemType));
  if(L.elem==NULL)
  {
    printf("失败");//加个打印看看
    exit(OVERFLOW);
  }
  else
  {
    printf("成功");
    L.length=0;
    L.listsize=LISTINCREMENT;
    return OK;
  }
}

------解决方案--------------------
C/C++ code

#include <stdlib.h>
#include "stdio.h"
//以下为函数运行结果状态代码  

#define TRUE 1
#define FALSE 0
#define OK 1  
#define ERROR 0  
#define INFEASIBLE -1  
#define OVERFLOW -2  

#define LIST_INIT_SIZE 5 //线性表存储空间的初始分配量  
#define LISTINCREMENT 1 //线性表存储空间分配增量  

typedef int Status; //函数类型,其值为为函数结果状态代码  

typedef int ElemType; //假设数据元素为整型  

typedef struct  
{  
  ElemType *elem; //存储空间基址  
  int length; //当前长度  
  int listsize; //当前分配的存储容量  
}Sqlist;  
//实现线性表的顺序存储结构的类型定义

static Sqlist L;//为了引用方便,定义为全局变量
static ElemType element;

///////////////////////////////////////
//函数名:InitList()
//参数:SqList L
//初始条件:无
//功能:构造一个空线性表
//返回值:存储分配失败:OVERFLOW
// 存储分配成功:OK
///////////////////////////////////////
Status InitList(Sqlist &L)//应该是地址传递 
{
  L.elem=(ElemType*)malloc(LIST_INIT_SIZE*sizeof(ElemType));//为什么这个地方根本就没有分配内存呢?我后面取L.listsize值的时候都是为0!求解!!!

  if(L.elem==NULL)
    { 
        printf("mallco error\n");
        exit(OVERFLOW);
     } 
  else
  {
          printf("成功");
          L.length=0;
        L.listsize=LIST_INIT_SIZE;//此处不是增量 
          return OK;
  }
}
int main()
{
int i=0;
int *p;
/** 
Status InitList(Sqlist L);//函数调用不是这样子得啊
**/
InitList(L);
 
L.elem=&i;p=L.elem;
printf("输出:%d ",L.listsize);
for(i=0;i<L.listsize;i++)
{
  L.elem=L.elem+1;
  (L.elem)=&i;
  printf("b");
}
printf("aaaaaaa");
for(i=0;i<L.listsize;i++)
{
printf("%d ",*(p));
}
}