动态顺序表的基本操作
来源:互联网 发布:如何参加淘宝天天特价 编辑:程序博客网 时间:2024/05/30 21:58
// 空间不够时动态增容
void CheckCapacity(PSeqListpSeqList)
{
if(pSeqList->last ==pSeqList->iCapacity)
{
pSeqList->pData = (DataType*)realloc(pSeqList->pData,pSeqList->iCapacity +DEFAULT_INT);
pSeqList->iCapacity =pSeqList->iCapacity +DEFAULT_INT;
}
}
//初始化顺序表
voidInitSeqListD(PSeqListpSeqList)
{
assert(pSeqList);
pSeqList->pData = (DataType*)malloc(INIT_SIZE*sizeof(DataType));
memset(pSeqList->pData, 0,INIT_SIZE*sizeof(DataType));
pSeqList->iCapacity =INIT_SIZE;
pSeqList->last = -1;
}
// 尾部插入
voidPushBack(PSeqListpSeqList,DataTypedata)
{
intend =pSeqList->last;
assert(pSeqList);
CheckCapacity(&pSeqList);
pSeqList->pData[end+1] =data;
pSeqList->last++;
}
// 尾部删除
voidPopBack(PSeqListpSeqList)
{
intend =pSeqList->last;
assert(pSeqList->last > 0);
pSeqList->pData[end] = 0;
pSeqList->last--;
}
// 头部插入
voidPushFront(PSeqListpSeqList,DataTypedata)
{
intbegin = 0;
intend =pSeqList->last;
assert(pSeqList);
CheckCapacity(&pSeqList);
for(end =pSeqList->last; end>=begin; end--)
{
pSeqList->pData[end+1] =pSeqList->pData[end];
}
pSeqList->pData[begin] =data;
pSeqList->last++;
}
// 头部删除
voidPopFront(PSeqListpSeqList)
{
intbegin = 0;
assert(pSeqList!=NULL);
for(begin = 0; begin <=pSeqList->last; begin++)
{
pSeqList->pData[begin] =pSeqList->pData[begin + 1];
}
pSeqList->last--;
}
// 销毁动态顺序表
voidDestroyList(PSeqListpSeqList)
{
pSeqList->iCapacity = 0;
pSeqList->last = 0;
free(pSeqList->pData);
pSeqList->pData =NULL;
}
// 改变顺序表中元素的个数,Size为元素的个数
voidReSize(PSeqListpSeqList,intSize)
{
assert(pSeqList);
if(Size<pSeqList->last)
{
//新分配元素个数小于顺序表长度,为缩小,顺序表长度,容量均改变
pSeqList->pData = (DataType*)realloc(pSeqList->pData,Size*sizeof(DataType));
pSeqList->last=Size;
pSeqList->iCapacity =Size;
}
else
{
//如果新分配元素个数大于顺序表长度,顺序表长度不变,容量改
pSeqList->pData = (DataType*)realloc(pSeqList->pData,Size*sizeof(DataType));
pSeqList->iCapacity =Size;
}
}
voidPrint(PSeqListpSeqList)
{
intbegin = 0;
for(begin = 0; begin <=pSeqList->last; begin++)
{
printf("%d\n",pSeqList->pData[begin]);
}
returnpSeqList;
}
0 0
- 动态顺序表的基本操作
- 动态顺序表的基本操作
- 动态顺序表(可扩容)的基本操作
- 顺序表的基本操作
- 顺序表的基本操作
- 顺序表的基本操作
- 顺序表的基本操作
- 顺序表的基本操作
- 顺序表的基本操作
- 顺序表的基本操作
- 顺序表的基本操作
- 顺序表的基本操作
- 顺序表的基本操作
- 顺序表的基本操作
- 顺序表的基本操作
- 顺序表的基本操作
- 顺序表的基本操作
- 顺序表的基本操作
- 第十四周阅读程序(2)
- 开源智能家居系统openHAB的安装使用
- c++ 优先队列
- 〔C# Note〕面向对象篇
- uva10976—分数拆分
- 动态顺序表的基本操作
- Qt动画效果的实现,QPropertyAnimation
- virtualbox复制粘贴文件到虚拟机
- mysql主从配置
- 引体向上练习
- 解决ScrollView中嵌套ListView滚动效果冲突问题
- 解决ScrollView中嵌套ListView滚动效果冲突问题
- Android基础之AsyncTask详解,巨细哟
- 海量数据去重之SimHash算法简介和应用