【数据结构与算法】顺序表

简介: 【数据结构与算法】顺序表

一.顺序表的原理

1.是什么

顺序表是一种线性的结构,类似于数组,但是中间不能有空值.

元素顺序地存储在一段连续的内存空间中.

顺序表中的元素类型是相同的.

顺序表的大小是固定的.

查找的速度很快,但是插入和删除需要移动大量的元素.

适用于元素访问频繁,但插入和删除操作较少的场景。

2.数据结构

包含一个基地址指针,一个记录当前个数的长度,和一个初始化顺序表的大小的结构体.

顺序表里面什么类型的都可以,我这里是自定义的人类结构体.

二.顺序表的初始化

初始化我们就需要对结构体的3个值进行赋值.

基地址,我们new手动开辟堆区内存

当前长度初始化为0

内存大小自己设定

当然这里做了一下防御性编程,如果堆区内存没有开辟成功就直接返回.

随便定义的一个宏.

三.顺序表增加元素

因为我们手动开辟的空间是一个数组,所以我们可以通过下标来进行添加数据.

因为我们添加数据是一个一个进行添加,相当于尾插法,而且数组的下标是从0开始.

所以我们可以直接通过,当前长度为下标进行添加,然后对当前长度加1.

当然如果内存满了就添加不了了,直接退出.

四.顺序表插入元素

插入元素就很好玩了,需要进行乾坤大罗伊,容我画个图,带你理解.

所以当我们要在数组某个位置插入一个图的时候,我们也需要进行移动.

那么如何能达到这种移动的效果呢,其实就是相当于覆盖,将前一个的值赋值到后面一个值.

为了保证值不受影响,我们从后往前进行赋值.

参数i是插入的位置,people是插入的元素.

我们需要做防御性编程,插入的位置不能离谱,还有满了就不能插了

从当前有的最后一个值的后一个开始,依次将前面的值赋值到后面.

在要插入的位置就设置当前要插入的值.

五.顺序表删除元素

原理跟插入是差不多的,也需要大量的移动.

只不过这次是将后面的值赋值到前面.

相当于是将要删除的值进行了覆盖,从而达到元素删除的效果.

当然,这里有一个要删除的特殊位置,那就是当删除的是顺序表的尾巴的时候,我们可以直接对当前值减一即可,访问不到.相当于就是删除.

六.顺序表的销毁

这个就很简单了,newdelete来进行销毁.

如果基地址不为空,就进行销毁,同时将长度和大小都设置为0.

七.总结

总的来说,顺序表的应用十分广泛,它在许多领域中都发挥着重要的作用,特别是当需要快速随机访问数据时。

相当于是数组的升级版可以进行插入和删除数据,使其更加的灵活.

相关文章
|
2月前
|
存储 编译器 C语言
数据结构-顺序表详解(看这篇就足够了,哈哈哈)
数据结构-顺序表详解(看这篇就足够了,哈哈哈)
61 2
|
1月前
|
存储 算法 安全
2024重生之回溯数据结构与算法系列学习之顺序表【无论是王道考研人还真爱粉都能包会的;不然别给我家鸽鸽丢脸好嘛?】
顺序表的定义和基本操作之插入;删除;按值查找;按位查找等具体详解步骤以及举例说明
|
1月前
|
存储 C语言
【数据结构】顺序表(c语言实现)(附源码)
本文介绍了线性表和顺序表的基本概念及其实现。线性表是一种有限序列,常见的线性表有顺序表、链表、栈、队列等。顺序表是一种基于连续内存地址存储数据的数据结构,其底层逻辑是数组。文章详细讲解了静态顺序表和动态顺序表的区别,并重点介绍了动态顺序表的实现,包括初始化、销毁、打印、增删查改等操作。最后,文章总结了顺序表的时间复杂度和局限性,并预告了后续关于链表的内容。
75 3
|
1月前
|
算法 安全 NoSQL
2024重生之回溯数据结构与算法系列学习之顺序表习题精讲【无论是王道考研人还真爱粉都能包会的;不然别给我家鸽鸽丢脸好嘛?】
顺序表的定义和基本操作之插入;删除;按值查找;按位查找习题精讲等具体详解步骤以及举例说明
|
2月前
|
存储 Java
数据结构第二篇【关于java线性表(顺序表)的基本操作】
数据结构第二篇【关于java线性表(顺序表)的基本操作】
40 6
|
2月前
|
存储 安全 Java
【用Java学习数据结构系列】探索顺序表和链表的无尽秘密(附带练习唔)pro
【用Java学习数据结构系列】探索顺序表和链表的无尽秘密(附带练习唔)pro
27 3
|
2月前
|
存储 C语言
探索C语言数据结构:利用顺序表完成通讯录的实现
本文介绍了如何使用C语言中的顺序表数据结构实现一个简单的通讯录,包括初始化、添加、删除、查找和保存联系人信息的操作,以及自定义结构体用于存储联系人详细信息。
34 2
|
2月前
|
存储
【数据结构】线性表和顺序表
【数据结构】线性表和顺序表
25 1
|
2月前
|
存储 算法 索引
【数据结构】——顺序表
【数据结构】——顺序表
|
2月前
|
存储
数据结构1——顺序表
数据结构1——顺序表
20 1
下一篇
DataWorks