C语言线性表操作:初始化、销毁和删除元素
#include 'LinearList.h'
int main(int argc, char* argv[]) { SqList L; int i; ElemType Elem;
//
// 初始化线性表
//
L.length = 8;
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个位置删除元素
//
ListDelete(&L, 4);
ListDelete(&L, 13); // 删除位置非法. 删除失败.
for (i=0; i<L.length; i++)
{
printf('%d ', L.elem[i]);
}
printf('\n');
DestoryList(&L);
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 开始计数。 返回值: 如果删除成功返回 OK 如果删除失败返回 ERROR / Status ListDelete(SqList L, int i) { if(i > L->length) return ERROR;
int j = 0; // 用于移动元素的游标
for(;j < L->length - 1;j++)
{
if(j >= i - 1)
{
L->elem[j] = L->elem[j+1];
}
}
L->length--;
return OK;
}
上述代码的作用是实现线性表的初始化、销毁和删除操作。具体包括以下几个功能:
-
Initlist函数用于初始化线性表,为线性表分配内存空间,并将线性表的长度和最大长度初始化为0。
-
DestoryList函数用于销毁线性表,释放线性表占用的内存空间,并将线性表的长度置为0。
-
ListDelete函数用于删除线性表中的第i个元素。首先判断删除位置是否合法,如果不合法则返回错误。然后通过移动元素的方式将目标位置后面的元素依次往前移动,最后将线性表的长度减1。
在主函数中,首先通过调用Initlist函数初始化线性表。然后通过循环给线性表赋值,并增加线性表的长度。接着调用ListDelete函数删除第4个和第13个元素。最后通过循环打印线性表中的元素,并调用DestoryList函数销毁线性表。
原文地址: https://www.cveoy.top/t/topic/h3Vm 著作权归作者所有。请勿转载和采集!