初始化顺序表
void InitList(SqList * &L)
{
L = (SqList *)malloc(sizeof(SqList));
if (!L)
{
exit(OVERFLOW);
}
L->length = 0;
}
销毁顺序表
void Destroy(SqList * &L)
{
free(L);
}
判断顺序表是否为空
Status ListEmpty(SqList * &L)
{
if (L->length == 0)
return TRUE;
else
return FALSE;
}
求顺序表表长
int ListLength(SqList * L)
{
return L->length;
}
打印顺序表
void DispList(SqList * L)
{
printf("打印\n");
int i;
if (ListEmpty(L)) return;
for (i = 0; i < L->length; i++)
{
printf("%d\t", L->data[i]);
}
printf("\n");
}
获取顺序表指定元素
Status GetElem(SqList * L, int i, ElemType &e)
{
if (i < 1 || i > L->length) return FALSE;
e = L->data[i - 1];
return TRUE;
}
获取元素在顺序表中的位置
int LocateElem(SqList * L, ElemType e)
{
int i = 0;
while (i < L->length && L->data[i] != e)
{
i++;
}
if (i >= L->length) return 0;
return i + 1;
}
元素插入操作
Status ListInsert(SqList * &L, int i, ElemType e)
{
int j;
if (i < 1 || i > L->length + 1)
return FALSE;
i--;
for (j = L->length; j > i; j--)
L->data[j] = L->data[j - 1];
L->data[i] = e;
L->length++;
return TRUE;
}
元素删除操作
Status ListDelete(SqList * &L, int i, ElemType &e)
{
int j;
if (i < 1 || i > L->length)
return FALSE;
i--;
e = L->data[i];
for (j = i; j < L->length; j++)
L->data[j] = L->data[j + 1];
L->length--;
return TRUE;
}
创建顺序表
void CreateList(SqList * &L, int n)
{
int i = 0;
int d;
for (; i < n; i++)
{
printf("输入数据:\n");
scanf("%d", &d);
L->data[i] = d;
L->length++;
}
}