考研数据结构知识点详解及整理——C语言描述】第二章 线性表顺序存储结构上的基本操作——顺序表的插入操作

本文主要是介绍考研数据结构知识点详解及整理——C语言描述】第二章 线性表顺序存储结构上的基本操作——顺序表的插入操作,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

25计算机考研,数据结构知识点整理(内容借鉴了王道408+数据结构教材),还会不断完善所整理的内容,后续的内容也会不断更新(可以关注),若有错误和不足欢迎各位朋友指出!

目录

 

一.插入操作

1.算法思想

2.算法描述

3.算法分析


一.插入操作

顺序表的插人运算是指在表的第i(1≤i≤n+1)个位置插入一个新元素e,使长度为n的顺序表(e_{1},…,e_{i-1}e_{i},…,e_{n})变成长度为n+1的顺序表(e_{1},…,e_{i-1},e,e_{i},…,e_{n})(其中n为L的表长度)。 

1.算法思想

用顺序表作为线性表的存储结构时,由于结点的物理顺微视频 2-2序必须和结点的逻辑顺序保持一致,因此必须将原表中位置n,n-1,…,i上顺序表插入的结点,依次后移到位置n+1,n,…,i+1上,空出第i个位置,然后在该位置插入新结点e。当i=n+1时,是指在顺序表的末尾插人结点,所以无须移动结点,直接将e插人表的末尾即可。

2.算法描述

#define OK 1
#define ERROR O
int InsList( SeqList * L,int i,ElemType e)
/*在顺序表L中第i个数据元素之前插入一个元素e,i的合法取值范围是1≤i≤L->last+2*/
{int k;if((i<1)||(i>L->last+2))  /*首先判断插入位置是否合法*/{printf("插人位置i值不合法");return(ERROR);}if(L->last>=MAXSIZE-1){printf("表已满,无法插人");return(ERROR);}for(k=L->last;k>=i-1;k--) /*为插入元素而移动位置,i-1为最后一个元素移动的下标*/L->elem[k+1]=L->elem[k]; //插入位置及之后的元素后移动L->elem[i-1]=e; //在c语言数组中,第i个元素的下标为i-1,将新元素e放入第i个元素L->last++; //表长增1return(OK);
}

3.算法分析

最好情况:当在表尾(i=L->last+2)插人元素时,因为循环的终值大于初值,此时不需要移动元素,可直接在表尾插人e,元素后移语句将不执行,时间复杂度为O(1)。

最坏情况:在表头(i=1)插入元素时,移动元素的语句L->elem[k+1]=L->elem[k]需执行n次,即将表中已存在的n个元素依次后移一个位置才能将e插入,时间复杂度为O(n)。因此,语句L->elem[k+1]=L->elem[k]的语句执行频度与插入位置i有关。

平均情况:E_{ins}为在长度为n的表中插入一个元素所需移动元素的平均次数,假设P_{i}为在第i个元素之前插入元素的概率,并假设在任何位置上插人的概率相等,P_{i }=1/(n+1),i=1,2,n+1,则有

因此,顺序表的插入算法的平均时间复杂度为O(n) 

这篇关于考研数据结构知识点详解及整理——C语言描述】第二章 线性表顺序存储结构上的基本操作——顺序表的插入操作的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1014705

相关文章

Linux线程同步/互斥过程详解

《Linux线程同步/互斥过程详解》文章讲解多线程并发访问导致竞态条件,需通过互斥锁、原子操作和条件变量实现线程安全与同步,分析死锁条件及避免方法,并介绍RAII封装技术提升资源管理效率... 目录01. 资源共享问题1.1 多线程并发访问1.2 临界区与临界资源1.3 锁的引入02. 多线程案例2.1 为

Oracle查询表结构建表语句索引等方式

《Oracle查询表结构建表语句索引等方式》使用USER_TAB_COLUMNS查询表结构可避免系统隐藏字段(如LISTUSER的CLOB与VARCHAR2同名字段),这些字段可能为dbms_lob.... 目录oracle查询表结构建表语句索引1.用“USER_TAB_COLUMNS”查询表结构2.用“a

python panda库从基础到高级操作分析

《pythonpanda库从基础到高级操作分析》本文介绍了Pandas库的核心功能,包括处理结构化数据的Series和DataFrame数据结构,数据读取、清洗、分组聚合、合并、时间序列分析及大数据... 目录1. Pandas 概述2. 基本操作:数据读取与查看3. 索引操作:精准定位数据4. Group

Python使用Tenacity一行代码实现自动重试详解

《Python使用Tenacity一行代码实现自动重试详解》tenacity是一个专为Python设计的通用重试库,它的核心理念就是用简单、清晰的方式,为任何可能失败的操作添加重试能力,下面我们就来看... 目录一切始于一个简单的 API 调用Tenacity 入门:一行代码实现优雅重试精细控制:让重试按我

C语言中%zu的用法解读

《C语言中%zu的用法解读》size_t是无符号整数类型,用于表示对象大小或内存操作结果,%zu是C99标准中专为size_t设计的printf占位符,避免因类型不匹配导致错误,使用%u或%d可能引发... 目录size_t 类型与 %zu 占位符%zu 的用途替代占位符的风险兼容性说明其他相关占位符验证示

Python标准库之数据压缩和存档的应用详解

《Python标准库之数据压缩和存档的应用详解》在数据处理与存储领域,压缩和存档是提升效率的关键技术,Python标准库提供了一套完整的工具链,下面小编就来和大家简单介绍一下吧... 目录一、核心模块架构与设计哲学二、关键模块深度解析1.tarfile:专业级归档工具2.zipfile:跨平台归档首选3.

idea的终端(Terminal)cmd的命令换成linux的命令详解

《idea的终端(Terminal)cmd的命令换成linux的命令详解》本文介绍IDEA配置Git的步骤:安装Git、修改终端设置并重启IDEA,强调顺序,作为个人经验分享,希望提供参考并支持脚本之... 目录一编程、设置前二、前置条件三、android设置四、设置后总结一、php设置前二、前置条件

Python操作PDF文档的主流库使用指南

《Python操作PDF文档的主流库使用指南》PDF因其跨平台、格式固定的特性成为文档交换的标准,然而,由于其复杂的内部结构,程序化操作PDF一直是个挑战,本文主要为大家整理了Python操作PD... 目录一、 基础操作1.PyPDF2 (及其继任者 pypdf)2.PyMuPDF / fitz3.Fre

python中列表应用和扩展性实用详解

《python中列表应用和扩展性实用详解》文章介绍了Python列表的核心特性:有序数据集合,用[]定义,元素类型可不同,支持迭代、循环、切片,可执行增删改查、排序、推导式及嵌套操作,是常用的数据处理... 目录1、列表定义2、格式3、列表是可迭代对象4、列表的常见操作总结1、列表定义是处理一组有序项目的

python使用try函数详解

《python使用try函数详解》Pythontry语句用于异常处理,支持捕获特定/多种异常、else/final子句确保资源释放,结合with语句自动清理,可自定义异常及嵌套结构,灵活应对错误场景... 目录try 函数的基本语法捕获特定异常捕获多个异常使用 else 子句使用 finally 子句捕获所