关于顺序表的问题?

来源:百度知道 编辑:UC知道 时间:2024/05/10 14:41:50
谁帮看看,谢谢,源码如下:

#include <iostream>
#include <stdlib.h>

typedef int ElemType;

typedef struct
{
ElemType data;
int length;
}Sqlist;

Sqlist *Creat()
{
Sqlist *S;
S=(Sqlist *)malloc(sizeof(Sqlist));
if(!S)
{
std::cout<<"开辟空间失败!"<<std::endl;
return NULL;
}
else
{
S->length=-1;
return S;
}
}

int Init_list(Sqlist *S,int i,ElemType e)
{
int j;
for(j=S->length-1;j>=i-1;j--)
{
S->data[j+1]=S->data[j]; /*报错在这儿,大概意思是下标需要数组或指针类型.如果把"[j+1]"和"[j]"去掉,这里编译器就通过了,但达不到目的.你们看看就明白了. */
}
S->data=e;
S->length++;
return 0;
}

void display(Sqlist *S)
{
std::cout<<"最后顺序表中的元素为:"<<std::endl;
for(int i=0;i<S->length;i++)
std::cout<<S->data[i]

typedef int ElemType;

typedef struct
{
ElemType data;
int length;
}Sqlist;

Sqlist的data域你没有定义成数组,只是一个int型,当然不能用[]操作符了。
定义成:int data[MAXDATA];即可,其中MAXDATA是有可能出现的最多元素个数。
或者定义成int *data;然后再动态分配内存。