数据结构第二课(顺序表)

顺序表的含义:

物理地址连续的存储单元依次存储数据元素的线性结构,一般用数组来存储

顺序表:可动态增长的数组,要求数据是连续存储的

一般采用动态数据表来存储数据

动态顺序表的代码

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++;

}

}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值