C语言线性表插入操作示例:在指定位置插入元素
#include 'LinearList.h'
int main(int argc, char* argv[]) { SqList L; int i;
//
// 初始化线性表
//
if (Initlist(&L) != OK) {
return 0;
}
int length = 8;
for (int i = 0; i < length; i++)
{
L.elem[i] = i * 2 + 1;
++L.length;
}
//
// 在第 i 个元素之后插入元素
//
ListInsertAfter(&L, 3, 38);
ListInsertAfter(&L, 14, 65); // 插入位置非法。插入失败。
for (i = 0; i < L.length; i++)
{
printf("%d ", L.elem[i]);
}
printf("\n");
return 0;
}
/* 功能: 初始化线性表。
参数: L -- 线性表
返回值: 无 / Status Initlist(SqList L) { L->elem = malloc(MAXSIZE * sizeof(ElemType)); if (!L->elem) exit(OVERFLOW); L->length = 0; L->maxLength = MAXSIZE; return OK; }
/* 功能: 销毁线性表。
参数: L -- 线性表
返回值: 无 / void DestoryList(SqList L) { free(L->elem); L->length = 0; }
/* 功能: 在第 i 个元素之后插入一个元素。
参数: L -- 线性表 i -- 指定位置。从 1 开始计数 e -- 插入的元素
返回值: 如果插入成功返回 1 如果插入失败返回 0 / Status ListInsertAfter(SqList L, int i, ElemType e) { int j = 0; // 初始化游标位置
//
// TODO: 在此添加代码
//
return ERROR;
} Status ListInsertBefore(SqList* L, int i, ElemType e) { int j; //判断线性表是否已满 if (L->length >= MAXSIZE) return ERROR; //判断插入位置是否合法 if (i < 1 || i > L->length) return ERROR; //将第 i 个元素之后的元素依次后移 for (j = L->length - 1; j >= i - 1; j--) L->elem[j + 1] = L->elem[j]; //在第 i 个元素之后插入元素 L->elem[i] = e; //线性表长度加1 L->length++; return OK; }
原文地址: https://www.cveoy.top/t/topic/eQAD 著作权归作者所有。请勿转载和采集!