#include <stdlib.h>
/*顺序表的定义:*/
#define ListSize 10
typedef int DataType;
typedef struct{
DataType data[ListSize];
int length;
}SeqList;
//顺序表的初始化
void initList(SeqList*L){ //构造一个空的线性表L
L=(SeqList*)malloc(sizeof(SeqList));
L->length=0;
}
//顺序表的插入
void insertList(SeqList * L, DataType x, int i)
{
int j;
for (j=L->length-1; j>=i-1; --j)
L->data[j+1]=L->data[j];
L->data[i-1]=x;
++L->length;
}
//顺序表的删除
void deleteList(SeqList * L, int i)
{
int j;
for (j=i; j<L->length; ++j)
L->data[j-1]=L->data[j];
--L->length;
}
//顺序表的更改
void updateList(SeqList * L, DataType x, int i)
{
L->data[i-1]=x;
}
//获取长度
int getLength(SeqList * L)
{
return L->length;
}
//获取元素
DataType getElem(SeqList * L, int i)
{
return L->data[i-1];
}
//操作函数
void debugPrint(SeqList * L)
{
int i, n = L->length;
for(i = 0; i < n - 1; i++)
printf("%d,", L->data[i]);
printf("%d\n", L->data[n - 1]);
}
//主函数
int main()
{
SeqList l;
int i;
initList(&l);
for(i = 0; i < ListSize - 1; i++)
insertList(&l, i + 1, i + 1);
printf("orginal list : ");
debugPrint(&l);
for(i = 0; i < ListSize; i++)
{
insertList(&l, 0, i + 1);
printf("insert 0 at position %d : ", i + 1);
debugPrint(&l);
updateList(&l, -1, i + 1);
printf("update the element at position %d to -1 : ", i + 1);
debugPrint(&l);
printf("current element at position %d is %d.\n", i + 1, getElem(&l, i + 1));
deleteList(&l, i + 1);
printf("delete the element at position %d : ", i + 1);
debugPrint(&l);
printf("\n");
}
}
1 个解决方案
#1
void initList(SeqList*L)
{
#if 0
//构造一个空的线性表L
L=(SeqList*)malloc(sizeof(SeqList));
#endif
L->length = 0;
}
去掉malloc申请空间,参考一下吧
main函数里定义的变量l是结构体变量,不是指针,因此,无需malloc空间,只需要初始化length即可。
#1
void initList(SeqList*L)
{
#if 0
//构造一个空的线性表L
L=(SeqList*)malloc(sizeof(SeqList));
#endif
L->length = 0;
}
去掉malloc申请空间,参考一下吧
main函数里定义的变量l是结构体变量,不是指针,因此,无需malloc空间,只需要初始化length即可。