绪论---顺序表的插入删除

233 阅读3分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第1天,点击查看活动详情

王道数据结构精讲。

数据结构三要素:逻辑结构、数据的运算、物理结构(存储结构)。

逻辑结构:集合、线性(一对一)、树形(一对多)、图状(多对多)。 物理结构:顺序存储、链式存储、索引存储、散列存储(哈希存储*)。

算法五个特性:有穷、确定、可行、输入、输出。

算法的效率:时间复杂度和空间复杂度

时间复杂度:---时间开销与问题规模n之间的关系

循环 image.png

一个算法的时间复杂度表示只用考虑高阶部分!

image.png

嵌套循环:

image.png

练习:①求时间复杂度

image.png

②平均时间复杂度

image.png

总结:一般而言,参考最坏时间复杂度和平均时间复杂度(所有输入示例等概率出现的情况下,算法的期望运行时间)。

空间复杂度:---空间开销(内存开销)与问题规模n之间的关系。

image.png 实际应用中只需关注存储空间大小与问题规模相关的变量。

注 * 空间复杂度 = 递归调用的深度。

线性表

image.png

linear adj.线的,线型的;直线的,线状的;长度的
list n.列表,清单,目录

基本操作:

image.png

①对数据的操作:增删改查,创销
②C语言函数定义---<返回值类型>函数名(<参数1类型>参数1,<参数2类型>参数2,.....)
③函数名和参数形式可改变
④基本操作中括号里的“&”何时要传入引用“&”--对参数的修改结果需要“带回来” 
⑤线性表中数据元素的位序(从1开始)注意审题

顺序表

静态分配:

image.png

image.png 声明length=0这一步必须做。

动态分配:

image.png

key:动态申请(malloc)和释放(free)内存空间
C--mallocfree函数存在于头文件<stdlib.h>中
*malloc函数返回一个指针,需强转成你定义的数据元素类型指针。

image.png malloc函数的参数,指明要分配多大的连续内存空间。

顺序表特点(按静态动态考虑):

   ①*随机访问,即可以在O(1)时间内找到第i个元素。
   ②存储密度高,每个节点只存储数据元素。
   ③拓展容量不方便。
   ④插入删除不便,需移动大量元素。

顺序表的插入操作

image.png

image.png

顺序表的删除操作

image.png

插入与删除的时间复杂度:最好O(1)、最坏O(n)、平均O(n)。
代码中注意位序i和数组下标的区别。
插入位置之后的元素都要后移。
删除位置之后的元素都要前移。

练习:

 计算机内部数据处理的基本单位是数据元素。
     基本单位数据元素,最小单位数据项。
 一些表面上很不相同的数据可以有相同的逻辑结构。
数据对象是有相同特征数据元素的集合,是数据的子集。
 
 数据结构是指数据元素的组织形式。(逻辑+存储+运算)存储运算与计算机有关,逻辑与计算机无关。
 计算机算法是解决问题的优先运算序列。
 一个算法应该是问题求解步骤的描述。