顺序表(C语言)

'''

1 .顺序表的概念及结构

在了解顺序表的概念前我们先来了解一个概念——线性表。

什么是线性表呢?线性表是n个具有相同特性的数据元素的有限序列。线性表是⼀种在实际中广泛使用的数据结构,常见的线性表:顺序表、链表、栈、队列、字符串...通俗一点,线性表在逻辑中是像线一样连续的,但它在物理结构上不一定连续,线性表在物理上存储时,通常以数组和链式结构的形式存储。

我们要讲的顺序表就是线性表的一种,它的底层是数组,所以顺序表的特点就是在逻辑上和物理结构上都连续。

'''

'''

2.顺序表的分类

1.顺序表和数组的区别在于,顺序表是对数组的分装,顺序表实现了常用的增删查改等接口。

2.顺序表分为两种,一种是静态顺序表,另一种是动态顺序表。

静态顺序表的结构(如图所示)

顺序表(C语言)_第1张图片

静态顺序表使用的是定长数组结构 ,它有一个很明显的缺点,空间给少了不够用,给多了容易造成浪费,所以在现实生活中它的使用场景比较小。

我们的重点是了解动态数组为底层的动态顺序表。

动态顺序表

顺序表(C语言)_第2张图片

以上就是动态顺序表的结构,首先是一个存放元素的动态数组a,其次是记录有效元素个数的size,再者就是用来记录总共开辟了多少内存空间的capacity 。那么我们如何用代码来实现顺序表的增删查改等内容呢?

'''

'''

3.动态顺序表的增删查改

首先,我们要来实现这么些个功能的话,最好让他们达到高内聚、低耦合的条件,简单的说,就是我们写的这些接口(函数)要有独立的功能,且相互之间要有联系。所以,我们用两个.c源文件和一个.h头文件来实现我们的动态顺序表。

我们的.h头文件是来进行我们的结构体和函数的声明的。

而我们的.c源文件是来进行接口的实现和测试接口的。

我们的.h头文件的内容就如下所示:

顺序表(C语言)_第3张图片 

在.h头文件中我们要注意几点:

 1.我们的库函数的头文件最好写在我们的头文件中,因为我们的两个.c源文件到时候是需要调用SqList.h这个头文件的。

2.我们最好给我们的顺序表重命名,这样的好处是使我们在写的过程中可以节省时间。

接下来是我们接口实现的SqList.c源文件。

顺序表(C语言)_第4张图片

顺序表(C语言)_第5张图片 

顺序表(C语言)_第6张图片 

顺序表(C语言)_第7张图片 

顺序表(C语言)_第8张图片 

 这些接口的实现都相对轻松,我们最后再写一个.c源文件来测试就可以了。

顺序表(C语言)_第9张图片

顺序表(C语言)_第10张图片

这里要注意,我们传的是是顺序表的地址,因为我们是想改变顺序表,而如果我们不传地址的话,就无法改变顺序表本身,因为形参是实参的一份临时拷贝,,所以不会改变原来的顺序表。这种时候我们来传地址就可以修改顺序表了。

 我们最后再来看一下运行结果:

顺序表(C语言)_第11张图片

'''

 

 

 

 

 

 

你可能感兴趣的:(c语言,开发语言,数据结构)