C语言超详细讲解顺序表的各种操作

2022-05-06 16:18:46
目录
顺序表是什么
顺序表的结构体
顺序表的接口函数
顺序表相关操作的菜单
顺序表的初始化
添加元素
陈列元素
往最后加元素
往前面加元素
任意位置加元素
删除最后元素
删除前面元素&nbwww.easck.comsp;
删除任意元素
整体代码(fun.h部分)
整体代码(fun.cpp部分)
整体代码(主函数部分)
结果展示

顺序表是什么

        顺序表是在计算机内存中以数组的形式保存的线性表,线性表的顺序存储是指用一组地址连续的存储单元依次存储线性表中的各个元素、使得线性表中在逻辑结构上相邻的数据元素存储在相邻的物理存储单元中,即通过数据元素物理存储的相邻关系来反映数据元素之间逻辑上的相邻关系,采用顺序存储结构的线性表通常称为顺序表。顺序表是将表中的结点依次存放在计算机内存中一组地址连续的存储单元中。

C语言超详细讲解顺序表的各种操作​ 

总的来说,顺序表类似于数组,下标对应的是相应的元素(如图所示)

顺序表的结构体

typedef>其中的SLDataType*a的意思是可以动态开辟空间--相当于数组,因为数组表示的是首元素的地址,这里是直接换成了指针,也指的是地址和数组的意思一样! 

typedef int SLDataType;//重命名,到时候方便更改类型

顺序表的接口函数

void>void SeqListInit(SL*ps);//初始化
void SeqListPushBack(SL*ps, SLDataType x);//往后加元素
void SeqListPush(SL*ps, SLDataType n);//在顺序表中添加元素
void SeqLhttp://www.easck.comistPopBack(SL*ps);//删除最后一个元素
void SeqListPushFront(SL*ps, SLDataType x);//往前面加元素
void SeqListPopFront(SL*ps);//删除第一个元素
void SepListdisplay(SL*ps);//陈列
void SeqListPushMid(SL*ps, SLDataType x,SLDataType z);//往中间加元素
void SeqListPopMid(SL*ps,SLDataType x);//删除中间某一个元素

这里只是先对一些函数进行声名,还没有进行创建函数!

顺序表相关操作的菜单

void>可以在控制台输入相关的数字进行相关的操作 

顺序表的初始化

void>顺序表初始化,首先使顺序表的指针置为空,先让顺序表的长度和容量都先置为空 

添加元素

void> 此时先进行判断,如果没有空间或者空间不足,就要把把一个新的容量赋值为原来容量的二倍,如果是0就赋值为100 。relloc是扩容函数,是在ps->a后面扩容一个SLDataType类型(强制类型转换)的有newcapacity大小的空间,申请成功的话,就让指针a的地址存放新的地址tmp,此时新的地址tmp里面有扩容后的空间,再让capacity为新的容量,让ps的第一个位置放传进来函数的x,最后再让它的大小++。

陈列元素

void>陈列元素这块很简单,直接可以通过它的下标找到它所代表的值,跟数组一样 

往最后加元素

void>此时还是要先进行判断顺序表的空间够不够,要是空间不够的话,再运用realloc函数进行重新分配空间,再直接让最后一个位置里面放上传过来的元素就可以了。

往前面加元素

void>往前面加元素的话,首先还是需要进行判断空间够不够,要是不够还是要运用realloc函数重新分配空间,此时要是想要在最前面添加元素的话,就需要先让它的大小++,再让从下标为0的第一个元素开始,把每一个元素都往后移动一个位置。移动完成之后,再让新的元素加入的顺序表的表头就可以了。 

任意位置加元素

void> 要是想在任意位置加元素的话,我们首先应该知道我们需要进行加元素的下标,以及我们需要添加的元素,此时刚好我们的函数里面已经接收到了这两个元素,此时我们就从这个下标开始,让下标对应的元素以及下标之后的元素都往后加一个位置,此时就可以为新的元素腾出一个位置,等全部移动完成后,我们就可以把元素加进来就可以了。

删除最后元素

void>这一块是最简单的了,直接让顺序表的大小--就可以了。 

删除前面元素 

void>我们这里可以直接让从下标为1以及后面的元素的位置往前面加一个位置,把第一个元素覆盖住就可以了。 

删除任意元素

void>这里的话我们已经知道我们需要删除元素的下标了,于是我们就可以从这个下标开始不包括这个下标对应的元素 ,把它们的位置往前推一个,把该元素覆盖住就可以了,最后再让大小减一。

整体代码(fun.h部分)

#pragma>

整体代码(fun.cpp部分)

#include<iostream>//顺序表的实现 #include<stdlib.h> #include"fun.h" using>

整体代码(主函数部分)

#include<iostream>//顺序表的实现 #include<stdlib.h> #include"fun.h" using>

结果展示

C语言超详细讲解顺序表的各种操作

C语言超详细讲解顺序表的各种操作

C语言超详细讲解顺序表的各种操作

C语言超详细讲解顺序表的各种操作 

到此这篇关于C语言超详细讲解顺序表的各种操作的文章就介绍到这了,更多相关C语言顺序表内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!