顺序表的含义:
物理地址连续的存储单元依次存储数据元素的线性结构,一般用数组来存储
顺序表:可动态增长的数组,要求数据是连续存储的
一般采用动态数据表来存储数据
动态顺序表的代码
typedef int SLDataType; //后续要存储其它类型时方便更改
1.定义一个typedef类型的数据结构
typedef struct SeqList
{ SLDataType* a; //指向动态开辟的数组
size_t size; //有效数据个数
size_t capacity; //容量大小 }
SeqList;
初始化顺序表
void initialSeqlist(SeqList * psl)
{
psl->a=NULL;
psl->size=0;
psl->capacity=0;
}
销毁顺序表
void DestorySeqlist(SeqList * psl)
{
assert(psl!=NULL)
free(psl->a)
psl->a=NULL;
psl->size=0;
psl->capacity=0;
}
检查顺序表是否为空
void CheckCacpity(SeqList* psl) { if(psl->capacity==psl->size) { int newcapacity=psl->capacity==0?4:psl->capacity*2; psl->a=(SeqList*)ralloc(newcapacity*sizeof(SeqList)); psl->capacity=newcapacity; } }
尾插顺序表
void PushBackSL(SeqList* psl,SLDataType)
{
assert(psl);
CheckCacpity(psl);
psl->a[psl->size]=x;
size++;
}
头插
void FrontInsertSL(SeqList* psl,SLDataType)
{
CheckCacpity(psl);
end=psl->size;
while(end)
{
psl->a[end]=psl->a[end-1];
psl->a[0]=x;
psl->size++;
}
}
尾删
void PushBackDestory(SeqList* psl)
{
assert(psl);
psl->size--;
}
头删
{
assert(psl);
int start=1
while(start)
{
psl->a[start-1]=psl=a[start];
start++;
}
psl->szie--;
}
找数组位置
int FindSeqlist(SeqList* psl,int post)
{
for(int i=0;i<post;i++)
{
if(psl->a[i]==post)
{
return i;
}
}
return -1;
}
插入
void InsertSeqlist(SeqList* psl,int post,int x)
{
int end=psl->size-;
while(end>=post)
{
a[end+1]=a[end];
end--;
}
psl->a[post]=x;
psl->size++;
}
删除
void EraseSeqlist(SeqList* psl,int post,int x)
{
int begin=post+1;
while(begin<=psl->size-1)
{
a[begin-1]=a[begin];
begin++;
}
}