顺序表和链表

简介: 前言一、线性表1、线性表2、顺序表3、接口实现4、顺序表的问题及思考5、链表6、移除元素7、删除排序数组中的重复项8、数组形式的整数加法9、合井两个有序数组9、旋转数组

前言
一、线性表
1、线性表
2、顺序表
3、接口实现
4、顺序表的问题及思考
5、链表
6、移除元素
7、删除排序数组中的重复项
8、数组形式的整数加法
9、合井两个有序数组
9、旋转数组
总结
前言
顺序表和链表

1线性表

2.顺序表

3.链表

4.顺序表和链表的区别和联系

提示:以下是本篇文章正文内容,下面案例可供参考

一、线性表
1、线性表
线性表 dinear list)是n个具有相同特性的数据元素的有限序列。线性表是一种在实际中广泛使用的数据结构,常见的线性表:顺序表、链表、栈、队列、字符串…

线性表在逻辑上是线性结构,也就说是连续的一条直线。但是在物理结构上并不一定是连续的,线性表在物理上存储时,通第以数组和链式结构的形式存储。

2、顺序表
概念及结构

顺序表是用一段物理地址连续的存储单元依次存储数据元素的线性结构,一般情况下采用数组存储。在数组上完成数据的增删查改。

顺序表一般可以分为:

1.静态顺序表:使用定长数组存储。

2.动态顺序表:使用动态开辟的数组存储。

代码如下;

代码如下;

3、接口实现
静态顺序表只适用于确定知道需要存多少数据的场景。静态顺序表的定长数组导致N定大了,空间开多了浪费,开少了不够用。所以现实中基序表根据需要动态的分配空间大小,所以下面我们实现动态顺序表。

代码如下;

4、顺序表的问题及思考
问题;

1.中间/头部的插入删除,时间复杂度为O(N)

2.增容需罗甲请新空间,拷贝数据,释放1日空间。会有不小的消耗。

3.增容一般是呈2倍的增长,势必会有一定的空间浪秀。

例如当前容量为100.满了以后增容到200.我们再继续插入了5个数据,后面没有数据插入了,那么就浪费了95个数据空间。

思考

如何解决以上问题呢?下面给出了链表的结构来看看

5、链表
链表的概念及结构

概念链表是一种物理存储结构上非连续 非顺序的存储结构,数据元素的接次席实现的。

代码如下;

顺序表

1、可动态增长的数组
2、数据在数组中存储时必须是连续的

缺点:

1、中间或者头部的插入删除很慢,需要挪动数据。时间复杂度是0(N)
2、空间不够时,增容会有一定消耗和空间浪费。

优点:

1、随机访问。
2、缓存利用率比较高。

6、移除元素
1、给你一个数组nums 和一个值val, 你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。

2、不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组。

3、元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。

7、删除排序数组中的重复项
1、给定一个排序数组,你需要在 原地 删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。

2、不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 0(1) 额外空间的条件下完成。

8、数组形式的整数加法
对于非负整数 × 而言,X的数组开式是每位数字按从左到右的顺序形成的数组。

例如,如果X=1231, 那么其数组形式为 [1,2.3,1]。

给定非负整数 x 的数组形式 :,返回整敬 X 的数组形式。

9、合井两个有序数组
给你两个有序整教数组 nums1 和nums2,请你将nums2 合并到nums1中,使nums1 成为一个有序数组。

说明:

1、初始化qum$1和nums2的元素数量分别为 m和n

2、你可以假设nums1 有足够的空间(空间大小大于或等于m+n)来保存nums2中的元素

9、旋转数组
给定一个数组,将数组中的元素向右移动 k 个位置,其中 k 是非负数。

进阶:

1、尽可能想出更多的解决方案,至少有三种不同的方法可以解决这个问题。

2、你可以使用空间复杂度为。(1) 的 原地 算法解决这个问题吗?

总结
提示:这里对文章进行总结:
例如:以上就是今天要讲的内容,本文仅仅简单介绍了顺序链和链表的使用,而顺序链和链表提供了大量能使我们快速便捷地处理数据的方法。

相关文章
|
5月前
|
存储
数据结构链表详解(不仅顺序表可以,我链表也可以)
数据结构链表详解(不仅顺序表可以,我链表也可以)
31 0
|
4月前
|
存储 缓存 算法
数据结构和算法学习记录——总结顺序表和链表(双向带头循环链表)的优缺点、CPU高速缓存命中率
数据结构和算法学习记录——总结顺序表和链表(双向带头循环链表)的优缺点、CPU高速缓存命中率
41 0
|
5月前
|
存储 缓存
[数据结构]——顺序表和链表
[数据结构]——顺序表和链表(下):https://developer.aliyun.com/article/1515507
|
2月前
|
存储 算法
【初阶数据结构篇】顺序表和链表算法题
此题可以先找到中间节点,然后把后半部分逆置,最近前后两部分一一比对,如果节点的值全部相同,则即为回文。
|
2月前
|
存储 缓存
【数据结构】——顺序表与链表
【数据结构】——顺序表与链表
|
4月前
|
存储 索引
顺序表和链表
通过以上示例,我们可以看到顺序表和链表在实际应用中如何操作。顺序表适合于需要频繁读取数据的场景,而链表则更适用于频繁修改数据的情况。在选择使用哪种数据结构时,应考虑到实际应用的需求和上下文环境。
24 2
|
4月前
|
存储
2.顺序表_链表(附练习)
2.顺序表_链表(附练习)
|
4月前
|
存储 算法
数据结构和算法学习记录——线性表之单链表(上)-初始单链表及其尾插函数(顺序表缺陷、单链表优点、链表打印)
数据结构和算法学习记录——线性表之单链表(上)-初始单链表及其尾插函数(顺序表缺陷、单链表优点、链表打印)
31 0
|
5月前
|
存储 缓存 程序员
初阶数据结构之---顺序表和链表(C语言)
初阶数据结构之---顺序表和链表(C语言)
|
5月前
|
存储 Java
数据结构奇妙旅程之顺序表和链表
数据结构奇妙旅程之顺序表和链表