顺序表算法实现

匿名 (未验证) 提交于 2019-12-02 23:26:52

初始化顺序表

 void InitList(SqList * &L) { 	L = (SqList *)malloc(sizeof(SqList)); 	if (!L) 	{ 		exit(OVERFLOW); 	} 	L->length = 0; }

销毁顺序表

 void Destroy(SqList * &L)  { 	free(L); }

判断顺序表是否为空

 Status ListEmpty(SqList * &L) { 	if (L->length == 0) 		return TRUE; 	else 		return FALSE; }

求顺序表表长

 int ListLength(SqList * L) { 	return L->length; }

打印顺序表

 void DispList(SqList * L) { 	printf("打印\n"); 	int i; 	if (ListEmpty(L)) return; 	for (i = 0; i < L->length; i++) 	{ 		printf("%d\t", L->data[i]); 	} 	printf("\n"); 	 }

获取顺序表指定元素

 Status GetElem(SqList * L, int i, ElemType &e) { 	if (i < 1 || i > L->length) return FALSE; 	e = L->data[i - 1]; 	return TRUE; }

获取元素在顺序表中的位置

 int LocateElem(SqList * L, ElemType e) { 	int i = 0; 	while (i < L->length && L->data[i] != e) 	{ 		i++; 	} 	if (i >= L->length) return 0; 	return i + 1; }

元素插入操作

 Status ListInsert(SqList * &L, int i, ElemType e) { 	int j; 	if (i < 1 || i > L->length + 1) 		return FALSE; 	i--; 	for (j = L->length; j > i; j--) 		L->data[j] = L->data[j - 1]; 	L->data[i] = e; 	L->length++; 	return TRUE; } 

元素删除操作

 Status ListDelete(SqList * &L, int i, ElemType &e) { 	int j; 	if (i < 1 || i > L->length) 		return FALSE; 	i--; 	e = L->data[i]; 	for (j = i; j < L->length; j++) 		L->data[j] = L->data[j + 1]; 	L->length--; 	return TRUE; }

创建顺序表

 void CreateList(SqList * &L, int n) { 	int i = 0; 	int d; 	 	for (; i < n; i++) 	{ 		printf("输入数据:\n"); 		scanf("%d", &d); 		L->data[i] = d; 		L->length++; 	} }

文章来源: https://blog.csdn.net/Flythewag/article/details/88867027
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!