0.数据结构-->顺序表

119 阅读2分钟

>顺序表

>> 线性表

>> 顺序表

1. 线性表

了解顺序表,链表前,先对最基本的线性表加以了解!

线性表是n个具有相同特性的数据元素的有限序列,常见的线性表有:顺序表、链表、栈、队列、字符串......

线性表在逻辑上是连续的,但是在物理上存储时,采用数组和链式结构形式存储。 如下图所示-->

image.png

image.png

2. 顺序表

2.1 概念&结构

顺序表可以简单的理解为数组,并在数组上进行增删查改!

顺序表可以分为静态顺序表与动态顺序表两种:>>

1.静态顺序表

#define N 10
typedef int SLDataType;
typedef struct SeqList
{
	SLDataType a[N];//定长数组
	int size;//存储数据的个数
}SeqList;

静态顺序表的缺陷:不能明确的知道存储数据的个数!从而N值设定不灵活,比较死板!

2.动态顺序表

typedef struct SeqList
{
	SLDataType* a;
	int size;//存储数据的个数
	int capacity;//灵活扩容
}SeqList;

对于静态顺序表的缺点,不予以采用,了解即可!下来对于线性表的增删查改,对动态顺序表的接口进行实现:

2.2 接口实现

实现动态顺序表

typedef int SLDataType;
typedef struct SeqList
{
	SLDataType* a;
	int size;//存储数据的个数
	int capacity;//扩容
}SeqList;
//顺序表打印
void SLprint(const SL* psl);
//顺序表的初始化与销毁
void SLInit(SL* psl);
void SLDestory(SL* psl);
// 基本增删查改接口
//头插头删 尾插尾删
void SLPushBack(SL* psl, SLDataType x);//尾插
void SLPushFront(SL* psl, SLDataType x);//头插
void SLPopBack(SL* psl);//尾删
void SLPopFront(SL* psl);//头删
//顺序表查找
void SLFind(SL* psl);'
//顺序表插入
void SLInsert(SL* sl, SLDataType x);
//顺序表指定位置删除
void SLErase(SL* psl, size_t pos, SLDataType x);
//顺序表指定位置修改
void SLModify(SL* psl, size_t pos,SLDataType x);