1、顺序存储的定义
- 是指用一段地址相连的存储单元依次存储线性表中的数据元素
2、设计思路
可以用一维数组实现顺序存储结构
包括:
- 存储空间:T* m_array
- 当前长度:int m_length
1 class SeqList: public List<T> 2 { 3 protected: 4 T* m_array;//指向一个数组 5 int m_length;//记录线性表的长度 6 }
3、元素的获取
- 判断目标位置是否合法
- 将目标位置作为数组下标获取元素
1 bool SeqList<T>::get(int i,T& e) const 2 { 3 bool ret=((0<=i)&&(i<m_length)); 4 5 if(ret) 6 { 7 e=m_array[i] 8 } 9 return ret; 10 }
4、数据的insert
- 判断目标位置是否合法
- 将目标位置之后的所有元素后移一个位置
- 将新元素加入目标位置
- 线性表长度加1
1 bool SeqList<T>::insert(int i,const T& e) 2 { 3 bool ret =((0<=i)&&(i <m_length)); 4 ret= ret&&((m_length+1)<=capacity)); 5 6 if(ret) 7 { 8 for(int p=m_length-1;p>=i;p--) 9 { 10 m_array[p+1]=m_array[p]; 11 } 12 13 m_ayyay[i]=e; 14 m_length++; 15 } 16 return ret ; 17 }
5、数据的delete
- 判断目标位置是否合法
- 将目标位置后的所有的元素前移一个位置
- 线性表长度减1
1 bool SeqList<T>::remove(int i) 2 { 3 bool ret=((0<=i)&&(i<m_length)); 4 5 if(ret) 6 { 7 8 for(int p=i;p<m_length-1;p++) 9 { 10 m_array[p]=m_array[p+1]; 11 } 12 m_length--; 13 } 14 15 return ret; 16 }
小结:
Seqlist也是一个抽象类,其结构:静态线性表和动态线性表