#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;

}

上述代码的作用是实现线性表的初始化、销毁和删除操作。具体包括以下几个功能:

  1. Initlist函数用于初始化线性表,为线性表分配内存空间,并将线性表的长度和最大长度初始化为0。

  2. DestoryList函数用于销毁线性表,释放线性表占用的内存空间,并将线性表的长度置为0。

  3. ListDelete函数用于删除线性表中的第i个元素。首先判断删除位置是否合法,如果不合法则返回错误。然后通过移动元素的方式将目标位置后面的元素依次往前移动,最后将线性表的长度减1。

在主函数中,首先通过调用Initlist函数初始化线性表。然后通过循环给线性表赋值,并增加线性表的长度。接着调用ListDelete函数删除第4个和第13个元素。最后通过循环打印线性表中的元素,并调用DestoryList函数销毁线性表。

C语言线性表操作:初始化、销毁和删除元素

原文地址: https://www.cveoy.top/t/topic/h3Vm 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录