赞
踩
目录
静态分配和动态分配的顺序表的初始化操作是不同的。
静态分配在声明一个顺序表时,就已为其分配了数组空间,因此初始化时只需将顺序表的当前长度设为0。
- //SqList L; //声明一个顺序表
- void InitList(sqList *L){
- L.length=0; //顺序表初始长度为0
-
动态分配的初始化为顺序表分配一个预定义大小的数组空间,并将顺序表的当前长度设为0。MaxSize 指示顺序表当前分配的存储空间大小,一旦因插入元素而空间不足,就进行再分配。
- void InitList(SeqList *L){
- L.data=(ElemType *)malloc(MaxSize*sizeof(ElemType)); //分配存储空间
- L.length=0; //顺序表初始长度为0
- L.MaxSize=InitSize; //初始存储容量
注意:动态分配并不是链式存储,它同样属于顺序存储结构,物理结构没有变化,依然是随机存取方式,只是分配的空间大小可以在运行时动态决定。
顺序表的主要优点:
①可进行随机访问即可通过首地址和元素序号可以在O(1)时间内找到指定的元素;
②存储密度高,每个结点只存数据元素。
①元素的插入和删除需要移动大量的元素,插入操作平均需要移动 n/2 个元素,删除操作平均需要移动(n-1)/2个元素;
②顺序存储分配需要一段连续的存空间,不够灵活:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。