顺序表与链表

主宰稳场 提交于 2020-02-11 21:22:31
顺序表

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

顺序表一般可以分为:

  1. 静态顺序表:使用定长数组存储
#define N 100
typedef int SLDataType;
typedef struct Seqlist
{
   SLDataType* a[N];  //定长数组
   size_t size;  // 有效数据的个数
}SeqList;
  1. 动态顺序表:使用动态开辟的数组存储
typedef int SLDataType; //定义数据类型方便更改
typedef struct SeqList
{
	SLDataType* a;   //指向动态开辟的数组
	size_t size;     //有效数据个数
	size_t capacity;    //容量大小
}SeqList;

动态顺序表增删查改等实现:
https://github.com/Ellyn-jia/Data-structure/tree/master/SeqList/SeqList

链表

链表是一种物理存储结构上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。

链表的结构是多样的:

  1. 单向、双向
    在这里插入图片描述
    在这里插入图片描述
  2. 带头指针、不带头指针
    在这里插入图片描述
    在这里插入图片描述
  3. 单链表、循环单链表
    在这里插入图片描述
    在这里插入图片描述

常见的两种链表结构:

  1. 无头指针单向不循环链表:结构简单,在考察中出现较多
    实现:https://github.com/Ellyn-jia/Data-structure/tree/master/SList/SList
  2. 带头双向循环链表:结构复杂,但是多在实际中使用,使用简单。
    实现:https://github.com/Ellyn-jia/Data-structure/tree/master/DList/DList

顺序表与链表:

顺序表: 空间连续,可以随机访问;在中间插入和删除的复杂度O(N)
链表:不能随机访问;在任意位置插入和删除的实践复杂度为O(1)

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!