顺序表的创建

本期我们主要讨论动态顺序表

这个内容可以分为三个部分

1.创建头文件进行函数声明

2.创建源文件进行函数定义

3.创建主文件进行测试

我们先来看看头文件里的函数声明:


函数声明:

头文件中包括<stdlib.h>库函数用于进行动态内存管理,assert用于警告退出。

SLDataType为顺序表中存储的元素类型,typedef int,即将int类型取个名字叫做SLDataType。与宏相反,例如define int SLDataType为将int转为SLDataType,而typedef是将SLDataType转为int。

SeqList为我们创建的顺序表,三个参数分别为

1.存储的元素指针类型(即首地址),相当于创建这种元素类型的数组,后面我们可以通过动态内存为这个地址开始分配空间。

2.现在在数组中存放的元素个数。

3.数组的空间容量,即可以存储多少个这种类型的元素。

接下来几个函数用途分别为初始化,销毁,输出,扩容,尾插,尾删除,头插,头删除操作。

函数定义:

函数定义的源文件中我们要包含声明的头文件,之后在开始对函数进行定义。

初始化函数:

传入顺序表的地址。

#注意:必须传入地址,传入的如果是顺序表本身的话只是对原顺序表的一份拷贝,无法队员顺序表进行修改。

将顺序表的数组地址设置为空。

将顺序表的元素个数设置为0。

将顺序表的空间大小设置为0.

销毁函数:

因为是动态顺序表,使用的空间是向操作系统借的,所以用完之后需要释放。

如果数组首地址不为空,则释放数组。

之后:

将顺序表的数组地址设置为空。

将顺序表的元素个数设置为0。

将顺序表的空间大小设置为0.

这一步其实可以直接用初始化函数完成。

输出函数:

按照正常的方式输出数组即可。

空间分配函数(重点):

如果已存放的元素个数等于数组可存放元素个数,则需要再分配空间。

此时有两种可能:

1.如果数组本身没有空间,则需要给他一个空间。

2.如果数组本身有空间,只需要将数组空间翻倍即可。

我们使用newcapacity来记录新空间的大小,并创建一个指针来记录开辟空间的首地址。

如果成功开辟空间,则将新空间传给顺序表,顺序表的数组地址改为新空间的地址,可存放元素个数改为newcapacity。

如果没有成功开辟,则产生警告,退出程序。

尾插函数:

先使用空间分配函数确保顺序表具有充足的空间,然后将顺序表数组的最后一位改为插入的值,粗放的元素个数size++。

头插函数:

第一步还是要检查数组空间是否足够。

找到顺序表数组最后一个位置

从size位置开始(数组元素最后一位为size-1,在头部插入新的值也就是所有元素后移一位)。

每一位都修改为前一位直到i=0时退出,i此时为第一位,即:将第一位修改为新插入的数x,然后将

存放的元素个数+1即可。

尾删函数:

将最后一位的值修改为-1然后存放的元素个数-1即可。

头删函数:

元素个数减去一,从第一位开始每一位都修改为后一位即可。

插入函数:

这个函数比头插尾插更高级,找到固定位置插入一个数即可。

我这里是pos为第几位,在那一位放上插入数。

查找函数:

用途为找到某个固定的数第一次出现的下标,没出现则返回-1.

汇总:

在我们创建的源文件中包含上我们刚刚定义函数的文件,然后进行运行,设计的符合预想,结束。

#看在博主这么辛苦写文章写代码的份上留个免费的赞吧,谢谢!

相关推荐

  1. 顺序应用

    2024-04-04 19:38:01       36 阅读
  2. 顺序实现

    2024-04-04 19:38:01       15 阅读
  3. 顺序查找

    2024-04-04 19:38:01       15 阅读
  4. 顺序动态实现

    2024-04-04 19:38:01       11 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-04-04 19:38:01       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-04-04 19:38:01       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-04-04 19:38:01       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-04-04 19:38:01       18 阅读

热门阅读

  1. 【设计模式】-单例模式

    2024-04-04 19:38:01       18 阅读
  2. Qt中实现域(Unix)套接字通信

    2024-04-04 19:38:01       20 阅读
  3. LeetCode-热题100:121. 买卖股票的最佳时机

    2024-04-04 19:38:01       17 阅读
  4. 2024年最新github之PHP语言开源项目top50排行榜

    2024-04-04 19:38:01       19 阅读
  5. 久菜盒子|留学|推荐信|international trade(国际贸易)

    2024-04-04 19:38:01       16 阅读