#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) { int j = 0; // 用于移动元素的游标

//
// TODO: 在此添加代码
//

return ERROR;

} 补全Status ListDelete(SqList* L, int i)这一行后面的代码,要求: 功能: 删除第 i 个元素。

参数: L -- 线性表 i -- 删除元素的位置。从 1 开始计数。 返回值: 如果删除成功返回 OK 如果删除失败返回 ERROR内容:Status ListDelete(SqList* L, int i) { if (i < 1 || i > L->length) { printf("删除位置非法. 删除失败.\n"); return ERROR; }

ElemType* p = &(L->elem[i - 1]); // p指向被删除元素的位置
ElemType* q = L->elem + L->length - 1; // q指向最后一个元素的位置

for (; p < q; p++) {
	*p = *(p + 1); // 将后面的元素往前移动一位
}

L->length--;

return OK;

}

C语言线性表删除元素示例 - ListDelete 函数实现

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

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