数据结构顺序表——结构体报错

请问为什么会出现这样的错误 求指教

错误显示:error C2275: 'SL' : illegal use of this type as an expression

img

我的代码如下:

#include<stdio.h>
#include<stdlib.h>
typedef int SLDataType;
#define INCREMENT 1000
typedef struct SeqList
{
SLDataType* a;
int size;
int capacity;
}SL;
void SeqListInit(SL* ps)
{
ps->size=0;
ps->capacity=0;
ps->a=NULL;
}
void SeqListCheckCapacity(SL* ps)
{
if(ps->size==ps->capacity)
{
ps->a=(SLDataType*)realloc(ps->a,(ps->capacity+INCREMENT)sizeof(SLDataType));
}
}
void SeqListPushBack(SL
ps,int x)
{
SeqListCheckCapacity(SL* ps);
ps->a[ps->size]=x;
ps->size++;
}
int main()
{
SL sl;
int i;
SeqListPushBack(&sl,0);
SeqListPushBack(&sl,1);
SeqListPushBack(&sl,2);
SeqListPushBack(&sl,3);
SeqListPushBack(&sl,4);
for(i=0;i<sl.size;i++)
{
printf("%d ",&sl);
}
printf("/n");
return 0;
}
(这是一个顺序表尾插法的代码)

void SeqListPushBack(SL *ps,int x)
{
SeqListCheckCapacity(ps);
ps->a[ps->size]=x;
ps->size++;
}

main函数里面你好像没有初始化sl吧!

修改处见注释,供参考:

#include<stdio.h>
#include<stdlib.h>
typedef int SLDataType;
#define INCREMENT 1000
typedef struct SeqList
{
    SLDataType* a;
    int size;
    int capacity;
}SL;
void SeqListInit(SL* ps)
{
    ps->size=0;
    ps->capacity=0;
    ps->a=NULL;
}
void SeqListCheckCapacity(SL* ps)
{
    if(ps->size==ps->capacity)
    {
       ps->a=(SLDataType*)realloc(ps->a,(ps->capacity+INCREMENT)*sizeof(SLDataType));
       ps->capacity += INCREMENT; //修改
    }
}
void SeqListPushBack(SL* ps,int x)
{
    SeqListCheckCapacity(ps); //修改
    //SeqListCheckCapacity(SL* ps);
    ps->a[ps->size]=x;
    ps->size++;
}
int main()
{
    SL sl;
    int i;

    SeqListInit(&sl); //缺少表的初始化  修改

    SeqListPushBack(&sl,0);
    SeqListPushBack(&sl,1);
    SeqListPushBack(&sl,2);
    SeqListPushBack(&sl,3);
    SeqListPushBack(&sl,4);
    for(i=0;i<sl.size;i++)
    {
        printf("%d ",sl.a[i]); //修改
        //printf("%d ",&sl);
    }
    printf("\n");  //修改
    //printf("/n");
    return 0;
}