>顺序表
>> 线性表
>> 顺序表
1. 线性表
了解顺序表,链表前,先对最基本的线性表加以了解!
线性表是n个具有相同特性的数据元素的有限序列,常见的线性表有:顺序表、链表、栈、队列、字符串......
线性表在逻辑上是连续的,但是在物理上存储时,采用数组和链式结构形式存储。 如下图所示-->
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);