调试并理解线性表顺序存储的实现,如线性表结构定义,初始化,插入元素,删除元素,便利显示,清空
时间: 2023-03-30 10:01:46 浏览: 65
线性表顺序存储的实现是通过数组来实现的,其结构定义为:
typedef struct {
ElemType *data; // 存储数据的数组
int length; // 线性表长度
int maxSize; // 线性表最大容量
} SqList;
初始化线性表可以通过以下代码实现:
Status InitList(SqList *L, int maxSize) {
L->data = (ElemType*)malloc(maxSize * sizeof(ElemType));
if (!L->data) {
exit(OVERFLOW);
}
L->length = ;
L->maxSize = maxSize;
return OK;
}
插入元素可以通过以下代码实现:
Status ListInsert(SqList *L, int i, ElemType e) {
if (i < 1 || i > L->length + 1) {
return ERROR;
}
if (L->length >= L->maxSize) {
return ERROR;
}
for (int j = L->length; j >= i; j--) {
L->data[j] = L->data[j - 1];
}
L->data[i - 1] = e;
L->length++;
return OK;
}
删除元素可以通过以下代码实现:
Status ListDelete(SqList *L, int i, ElemType *e) {
if (i < 1 || i > L->length) {
return ERROR;
}
*e = L->data[i - 1];
for (int j = i; j < L->length; j++) {
L->data[j - 1] = L->data[j];
}
L->length--;
return OK;
}
遍历显示可以通过以下代码实现:
void ListTraverse(SqList L) {
for (int i = ; i < L.length; i++) {
printf("%d ", L.data[i]);
}
printf("\n");
}
清空线性表可以通过以下代码实现:
void ClearList(SqList *L) {
L->length = ;
}