1.关于线性表顺序存储操作的 16 种算法
2.关于线性表链接存储(单链表)操作的 16 种算法
数据结构C语言实现系列——线性表
#include
#include
typedef int elemType;
/************************************************************************//* 以下是关于线性表顺序存储操作的16种算法 */
/************************************************************************/struct List{
elemType *list;
int size;
int maxSize;
};
void againMalloc(struct List *L)
{
/* 空间扩展为原来的2倍,并由p指针所指向,原内容被自动拷贝到p所指向的存储空间 */ elemType *p = realloc(L->list, 2 * L->maxSize * sizeof(elemType)); if(!p){ /* 分配失败则退出运行 */
printf("存储空间分配失败! ");
exit(1);
}
L->list = p; /* 使list指向新线性表空间 */
L->maxSize = 2 * L->maxSize; /* 把线性表空间大小修改为新的长度 */}
/* 1.初始化线性表L,即进行动态存储空间分配并置L为一个空表 */
void initList(struct List *L, int ms)
{
/* 检查ms是否有效,若无效的则退出运行 */
if(ms <= 0){
printf("MaxSize非法! ");
exit(1); /* 执行此函数中止程序运行,此函数在stdlib.h中有定义 */
}
L->maxSize = ms; /* 设置线性表空间大小为ms */
L->size = 0;
L->list = malloc(ms * sizeof(elemType));
if(!L->list){
printf("空间分配失败! ");
exit(1);
}
return;
}
/* 2.清除线性表L中的所有元素,释放存储空间,使之成为一个空表 */
void clearList(struct List *L)
{
if(L->list != NULL){
free(L->list);
L->list = 0;
L->size = L->maxSize = 0;