当前位置:   article > 正文

线性表的顺序存储结构c语言的实现_假设线性表采取顺序存储结构,写出以下算法并用c语言实现。

假设线性表采取顺序存储结构,写出以下算法并用c语言实现。

第一次写博客,有点小小的紧张,最近学习数据结构,我有个想法将线性表的顺序储存、链式储存都归纳起来。
首先今天写一下线性表的顺序储存。
在这里插入图片描述在这里插入图片描述1.顺序存储结构的特点:

  • 线性表的逻辑结构与存储结构一致。用数据元素的存储位置标示相邻数据元素之间的前后关系。
  • 可以对数据元素进行随机储存。访问线性表时,可以利用上述给出的数学公式,快速地计算出任何一个数据元素的存储地址。这种存取方法称为随机储存法。
  • 简而言之:顺序储存结构逻辑上相邻,物理上相邻

2.顺序表的类型定义
在这里插入图片描述 L加&表示引用类型参数,函数内部的改变跳出函数依然有效
不加&表示内部改变,跳出函数后无效
3.线性表的重要基本操作
3.1顺序表的初始化
算法步骤:
1.为顺序表L动态分配一个预定义大小的数组空间,使elem指向这段空间的基地址
2.将表的当前长度设为0
在这里插入图片描述3.2顺序表的取值
算法步骤:
1.判断指定位置的序号i值是否合理(1<=i<=L.length),若不合理,则返回ERROR;
2.若i合理,则将第i个数据元素L.elem[i-1]赋值给参数e,通过e返回第i个数据的传值。
在这里插入图片描述3.3顺序表的查找
(按值查找)
算法步骤:1.从第一个元素起,依次和e相比较,若找到与e相等的元素L.elem[i],则查找成功,返回该元素序号i+1
2.若查遍整个顺序表都没有查到,则查找失败,返回0.
在这里插入图片描述
3.4顺序表的插入
算法步骤:
1.判断插入位置i是否合法(i值的合法范围是1<i<L.length+1),若不合法则返回ERROR.
2.判断表的存储空间是否已满,若满则返回ERROR。
3.将第L.length(n)个至第i个位置的元素依次向后移动一个位置,空出第i个位置(i=n+1无需多动)
4.将要插入的新元素e放入第i个位置。
5.表长+1
在这里插入图片描述3.5顺序表的删除
算法步骤:
1.判断删除i位置是否合法(合法值为1<i<L.length),若不合法则返回REEOR.
2.将第i+1个元素至第n(L.length)个元素依次向前移动一个位置(i=n时)不需要移动
3.表长-1
在这里插入图片描述3.7其他基本操作
在这里插入图片描述
4.算法分析
对于插入操作:
设表长为n,算法的时间主要花费在结点后移语句上,该语句的执行次数(移动的节点次数)n-i+1.
所需移动的结点的次数不仅依赖于表的长度,还与插入的位置有关。
若假定在n+1个位置上插入的元素的可能性相等,则平均移动元素的个数是
在这里插入图片描述 对于删除操作: 同理可得
在这里插入图片描述5.总结
顺序存储结构的特点:

  • 利用数据元素的储存位置表示线性表中相邻数据元素之间的前后关系,即线性表的逻辑结构与存储结构一致

  • 在访问线性表时,可以快速的计算出任何一个数据元素的存储地址。因此可以粗略的认为,访问每一个元素所花的时间相等。

    顺序存储结构的优缺点
    优点:存储密度大(结点本身所占储存容量/结点结构所占储量),可以随机存取表中任一元素
    缺点:在插入、删除某一元素时,需要移动大量元素;浪费存储空间;属于静态储存方式,数据元素的个数不能自由扩充。
    代码实现:
    在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述仅供参考

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

闽ICP备14008679号