美文网首页
顺序表的插入

顺序表的插入

作者: psh_11 | 来源:发表于2020-04-30 21:46 被阅读0次

戒骄戒躁

顺序的插入操作的实现——算法思想

一、开始插入操作前需要注意的情况:

1、判断插入的位置i是否合法
2、判断顺序表存储空间是否已满,若已满则返回ERROR,
即判断L.length是否等于数组的最大值,如果等于,说明数组已满。

二、避免不发生上述情况就可以开始插入操作:

//空出第i个位置
1、将最后一个元素到第i个元素的位置往后移,空出第i个位置
2、将要插入的新元素e放入第i个位置
3、表长加1,插入元素成功返回OK

伪代码实现:

/*伪代码并不能在电脑上运行,但方便描述算法思想,所以学一门编程语言吧*/
Status Listlnsert_Sq(SqList &L, int i, Elem Type e){
    if(i < 1 || i > L.length + 1)//判断插入位置是否合法,注意这是伪代码i是从1开始的,L.length占了结尾一个结点所以加1
        return ERROR;
        
    if(L.length == MAXSIZE)     //存储空间已满
        return ERROR;
    
    for(j = L.length; j >= i - 1; j--)//将最后一个元素到第i个元素的位置往后移,空出第i个位置
        L.elem[j+1] = L.elem[j];//从最后一个元素开始,把前一个元素的值放到后一个元素
    L.elem[i-1] = e;            //将新元素e放入第i个位置
    L.length ++;//表长加1
    return OK;
}

教材《数据结构》的伪代码就这点不好,在循环里没有迁就C语言下标从0开始。

最佳情况:插入尾结点之后
最坏情况:插入首结点之前

一共有n+1种情况,平均移动次数是n/2,
平均时间复杂度为O(n)。

所以在顺序表上插入是很麻烦的。

相关文章

  • 数据结构导论算法总结

    一、线性表顺序存储 1、顺序表的插入运算* 顺序表的插入运算 InsertSeqlist (SeqList L,D...

  • 数据结构(顺序表常用操作)

    上篇有顺序表的大概介绍和初始化,以及存储数据的操作,接下来是顺序表的常用操作 顺序表插入元素 向已有的顺序表插入元...

  • 线性表

    线性表:定义: InitList_Sq现实: 顺序表的查找: 顺序表插入:

  • 顺序表的插入算法

    顺序表的插入算法

  • 线性表之顺序存储-顺序表

    顺序表的操作 [x] 向有序顺序表插入一个元素 [x] 顺序表的冒泡排序 [x] 顺序表的删除操作 [x] 顺序表...

  • 顺序表的插入

    戒骄戒躁 顺序的插入操作的实现——算法思想 一、开始插入操作前需要注意的情况: 1、判断插入的位置i是否合法2、判...

  • 顺序表的插入

  • 线性表-顺序表与单链表

    顺序表 线性表的顺序存储,是逻辑相邻,物理存储地址也相邻。 结构定义 顺序表的初始化 顺序表的插入 顺序表的取值 ...

  • Java数据结构(二):线性表之顺序表

    顺序表采用数组实现,并且通过继承AbstractList类,下图为顺序表的存储结构图: 顺序表上的插入和删除是顺序...

  • MySql表操作

    @[TOC] 插入数据 插入完整数据(顺序插入) 语法一: insert into 表名(字段1,字段...

网友评论

      本文标题:顺序表的插入

      本文链接:https://www.haomeiwen.com/subject/ovntghtx.html