线性表C语言实现代码

线性表特点
1)存在惟一的被称作“第一个”的数据元素
2)存在惟一的被称作最后一个”的数据元素
3)除第一个外,集合中每个数据元素均只有驱
4)除最后一个外,集合中每个数据元素只有个后继
根据存储方式不同,分为顺序存储结构与链式存储结构。

线性表的顺序表示指的是用一组地址连续的存储单元依次存储线性表的数据元素

#ifndef _LIST_H
#define	_LIST_H

#define LIST_INIT_SIZE 10    //线性表初始化存储空间大小
#define LIST_INCREMENT 10    //线性表存储空间递增大小

typedef struct{
	ElemType * elem;         //线性表首地址
	int length;              //线性表当前使用长度
	int size;                //线性表当前最大长度
}LIST;

LIST *InitList();
void FreeList(LIST *l);
int InsertList(LIST * l,int i,ElemType *e);
int DeleteList(LIST *l,int i);

#endif

//ElemType是实现数据元素类型,根据使用进行定义

线性表删除方法

int ListDelete(LIST *list,int i,ElemType *e){
    //在顺序线性表list中删除第i个元素,并用e返回其值
    ElemType *p=NULL,*q=NULL;
    //判断i的合法值为  1<=i<=list->length
    if(i<1||i>list->length) return 0;
    p=&list->elem[i-1];
    *e=*p;
    q=list->elem+list->length-1;
    for(++p;plength;
    return 1;
}

释放内存方法

void FreeList(LIST *list){
    free(list->elem);
    free(list);
}

完整源码下载地址:https://github.com/sunjdk/datastructure.git

你可能感兴趣的:(算法)