当前位置:   article > 正文

顺序表_顺序表的地址计算

顺序表的地址计算

顺序表

1,也称向量,采用定长的一维数组存储结构

2.主要特性

- 元素的类型相同

- 元素顺序地存储在连续存储空间中,每一个元素有唯一的索引值

- 使用常数作为向量长度

3.数组存储

4.读写其元素很方便,通过下标即可指定位置

- 只要确定了首地址,线性表中任意数据元素都可以随机存取

5.元素地址计算如下所示:

- Loc(ki) = Loc(k0)+c*i, c = sizeof(ELEM)


顺序表的定义

  1. class arrList::public List<T> //顺序表,向量
  2. {
  3. private: //线性表的取值类型和取值空间
  4. T*alist; //私有变量,存储顺序表的实例
  5. int maxSize; //私有变量,顺序表实例的最大长度
  6. int curLen; //私有变量,顺序表实例的当前长度
  7. int position; //私有变量,当前处理位置
  8. public:
  9. arrList(const int size) //创建新表,设置表实例的最大长度
  10. {
  11. maxSize=size;
  12. aList=new T[maxSize];
  13. curLen=position=0;
  14. }
  15. ~arrList() //析构函数,用于消除该表实例
  16. {
  17. delete []aList;
  18. }
  19. void clear() //将顺序表存储的内容清除,成为空表
  20. {
  21. delete []aList;
  22. curLen=position=0;
  23. aList=new T[maxSize];
  24. }
  25. int length(); //返回当前实际长度
  26. bool append(const T value); //在表尾添加元素v
  27. bool insert(const int p,const T value); //插入元素
  28. bool delete(const int p); //删除位置上的元素
  29. bool setValue(const int p,const T value); //设置元素值
  30. bool getValue(const int p,T& value); //返回元素
  31. bool getPos(int &p,const T value); //查找元素
  32. };

顺序表的插入

  1. //设元素的类型为T,aList是存储顺序表的数组,maxSize是其最大长度;
  2. //p为新元素value的插入位置,插入成功则返回true,否则返回false
  3. template<class T> bool arrList<T>::insert(const int p,const T value)
  4. {
  5. int i;
  6. if(curLen>=maxSize) //检查顺序表是否溢出
  7. {
  8. cout<<"The list is overflow"<<<endl;
  9. return false;
  10. }
  11. if(p<0||p>currLen) //检查插入位置是否合法
  12. {
  13. cout<<"insertion point is illegal"<<endl;
  14. return false;
  15. }
  16. for(i=currLen;i>p;i--)
  17. aList[i]=aList[i-1]; //从表尾curLen-1起往右移动直到p
  18. aList[p]=value; //位置p出插入新元素
  19. curLen++; //表的实际长度增1
  20. return true;
  21. }

顺序表的删除

  1. template<class T> //顺序表的元素类型为T
  2. bool arrList<T>::delete(const int p)
  3. {
  4. int i;
  5. if(curLen<=0) //检查顺序表是否为空
  6. {
  7. cout<<"No element to delete \n"<<endl;
  8. return false;
  9. }
  10. if(p<0||p>curLen-1) //检查删除位置是否合法
  11. {
  12. cout<<"deletion is illegal\n"<<endl;
  13. return false;
  14. }
  15. for(i=p;i<curLen-1;i++)
  16. aList[i]=aList[i+1]; //从位置p开始每个元素右移直到curLen
  17. curLen--; //表的实际长度减一
  18. return true;
  19. }

顺序表插入删除运算的算法分析

1.表中元素的移动

- 插入:移动n-i个

- 删除:移动n-i-1个


声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/427100
推荐阅读
相关标签
  

闽ICP备14008679号