1. 概念:
顺序表是用一段 物理地址连续 的存储单元依次存储数据元素的线性结构,一般情况下采用数组存储。在数组上完成数据的增删查改。
2. 顺序表分类:
(1)静态顺序表:使用定长数组存储。
(2)动态顺序表:使用动态开辟的数组存储。
2.1 静态顺序表
特点: 使用定长数组存储
// 顺序表的静态存储
// 设置顺序表有效元素的个数,即顺序表的长度
#define MAXSIZE 100
// 使用typedef类型定义关键字,给顺序表类型取别名为:DataType
typedef int DataType;
// 将顺序表分装成一个结构体
struct SeqList{
DataType array[MAXSIZE]; // 存储顺序表中的有效元素
int size; // 记录当前顺序表中有效元素的个数
};
2.2 动态顺序表
特点: 使用动态开辟的数组存储
// 顺序表的动态存储
typedef int DataType;
typedef struct SeqList{
DataType* _array; // 保存顺序表中的有效元素
int _capacity; // 顺序表空间大小,capacity(容量)
int _size; // 记录顺序表中有效元素的个数
}SeqList, *PSeqList;
3. 动态顺序表基本操作
SequenceList.h
///
// 这是一个顺序表基本操作的练习代码
///
#ifndef _SEQLIST_H_
#define _SEQLIST_H_
#include <stdio.h>
#include <malloc.h>
#include <assert.h>
#if 0
// 静态顺序表
// 顺序表容量不可变,使用定长数组存储
#define MAX_SIZE 100
typedef int SLDataType;
typedef struct SeqList {
SLDataType array[MAX_SIZE]; // 数组长度
size_t size; // 顺序表中有效元素的个数
} SList;
#endif
// 动态顺序表
// 顺序表容量可变,使用动态开辟的数组进行存储
typedef int SLDataType;
typedef struct SeqList {
SLDataType* array; // 纸箱动态开辟的数组
size_t size; // 顺序表中有效元素的个数
size_t capicity; // 容量空间的大小
} SList;
// 初始化顺序表
void SeqListInit(SList* psl, size_t capicity);
// 销毁顺序表
void SeqListDestory(SList* psl);
// 检查顺序表容量
void CheckCapicity(SList* psl);
// 尾插
void SeqListPushBack(SList* psl, SLDataType data);
// 尾删
void SeqListPopBack(SList* psl);
// 头插
void SeqListPushFr