【数据结构】顺序表(线性表)的实现

目录

         一、什么是顺序表?

         二、顺序表的动态实现

               1、顺序表初始化

               2、顺序表打印

               3、顺序表检查空间

               4、顺序表尾插

               5、顺序表尾删

               6、顺序表头插

               7、顺序表头删

               8、顺序表指定位置插入

               9、顺序表指定位置删除

               10、顺序表查找

               11、顺序表销毁

         三、源代码

               1、SeqList.h

               2、SeqList.c

               3、test.c

 


 

一、什么是顺序表?

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

顺序表的结构如下:

【数据结构】顺序表(线性表)的实现_第1张图片 

顺序表一般分为两种:

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

#define Max 10 
typedef int SLDataType;
typedef struct SeqList
{
	SLDataType data[Max];  //定长数组
	size_t size;  //有效数据的个数
}SeqList;

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

typedef int SLDataType;
typedef struct SeqList
{
	SLDataType* a;      // 指向动态开辟数组的指针
	size_t size;        // 有效数据个数
	size_t capicity;    // 容量空间的大小
}SeqList;

【数据结构】顺序表(线性表)的实现_第2张图片

本文主要使用的是动态顺序表,因为静态顺序表是事先已经设置好数组空间的大小,万一需要的空间大小比事先设置的大,此时就会出现溢出的情况,使用不方便,所以在这里使用动态顺序表,用多少开辟多少的数组空间。

二、顺序表的动态实现

  1、顺序表初始化

//初始化
void SLInit(SL* ps)
{
	assert(ps);
	ps->a = NULL;
	ps->size = 0;
	ps->capacity = 0;
}

初始化的时候可以给顺序表开辟空间,当然也可以直接将指针a给设置为NULL,size和capacity同样设置为0。

你可能感兴趣的:(数据结构,顺序表,算法)