利用C语言实现动态顺序表
1. 数据类型及动态分配顺序存储结构
#define INIT_SIZE 10 //当前默认有效值
#define DEFAULT_INC 10 //动态分配默认增长个数
typedef int DataType;
typedef struct SeqList
{
DataType* data; //指向空间的指针
int size; //当前有效的个数
int capacity; //容量
}SeqList,*pSeqList;
2. 动态顺序表的常用操作
(1) 顺序表的初始化
void InitSeqList(pSeqList pSeq)//初始化顺序表
{
assert(pSeq);
pSeq->data = (DataType *)malloc(INIT_SIZE*sizeof(DataType));//
memset(pSeq->data,0,INIT_SIZE*sizeof(DataType));
pSeq->capacity = INIT_SIZE;
pSeq->size = 0;
}
(2) 在顺序表中尾插,头插,在特定位置插入时,需要判断当前顺序表的容量是否够用,若不够,则需要开辟新的空间
void CheckCapacity(pSeqList pSeq)//判断容量
{
if(pSeq->size == pSeq->capacity)
{
pSeq->data = (DataType*)realloc(pSeq->data,pSeq->capacity + DEFAULT_INC);
pSeq->capacity = pSeq->capacity + DEFAULT_INC;
}
}
(3) 动态顺序表的常用操作
//------------------------------- 尾插 ---