线性表之顺序存储详解

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也是一个抽象类,其结构:静态线性表和动态线性表

猜你喜欢

转载自www.cnblogs.com/zhaobinyouth/p/9566538.html