数据结构—顺序表

一.顺序表的结构体类型

     包含三个成员:

      1. * case由于顺序表在内存中的空间是连续的,所以申请一个指向顺序表的base指针,申请一个连续空间可以用   下标操作。

      2. capacity 定义一个容量大小。

      3. len 定义一个长度,初始化为0,插入一个数据 len++, 删除一个数据 len--。

    

二.顺序表结构体类型

三.顺序表中重要函数

1.尾插push_back 、头插push_front

     想要插入,顺序表必须没有满,判断条件:seqlist->len >= seqlist->capacity 表示顺序表已满,不能插入。

尾插表不满的话,直接在尾部进行插入,最后记得在len++;

      头插表不满的话,在头部插入之前必须先移动数据,从尾部的数据开始移动base[i] = base[i-1], 循环结束条件是 i>0,然后把x插入到list->base[0],最后记得len++;

2.尾删pop_back 、头删    pop_front

       尾删、头删前提条件是顺序表不能为空seqlist->len <= 0

       尾删的话,顺序表不为空,直接让seqlist->len--;就行,删除不一定非要把该数据给删除了,只要让len--,如果再要插入直接把以前数据覆盖了

       头删的话,顺序表不为空,从头部开始移动list->base[i] = list->base[i+1],最后len--;

3.显示函数show

       显示函数:循环解决问题,从头输出到尾,循环结束条件是i < list->len。

4.头部元素front,尾部元素back    

       返回一个元素类型,用到断言(顺序表不空list->len > 0),最后return头部或者尾部元素

5.按位置插入insert_pos

       按位置插入的话函数原型必须有三个参数(顺序表,位置,插入元素),首先要插入一个元素必须顺序表不满(list->len >= list->capecity),其次插入的位置合法(pos>=0 || pos <list->len),最后插入元素,利用循环移动位置,别忘记给len++。

6.排序sort(冒泡排序)

       冒泡排序的思想是(假设从小到大排序):利用两个循环,让大数往底沉,小数往上冒。

       有n个元素,循环n-1趟(最后一趟就剩一个数。没不要和自己比,所以减1),每一趟中,循环j-1-i(最后一个元素没必要和自己比较,-i是因为跑完i趟就少比i个元 素),然后利用选择语句if(list->base[j] < list->base[j+1]) 前数小于后数,定义一个临时变量temp 交换两数( t = a ,a=b, b=t)。

7.按值插入insert_val

       按值插入的话,首先要是一个排好顺序的顺序表(假如由小到大排序),插入首先顺序表不能满,其次循环比较,满足条件就移动数据(循环条件 i>0 && value<list- >base[i-1]),不满足条件跳出循环,把value插入,最后记得len++;

8.逆置函数reverse

        逆置函数不是反着把顺序表打印一边,而是在内从中真实现实值得翻转。

思想是:定义一个低位low,一个高位high。循环条件(low<high)就交换两数

9.查找函数find

        要查找一个数,顺序表不能空,利用循环,选择语句即可查出元素,否者返回-1.

 

10.清理clean和摧毁destroy

        清理是让顺序表里为空(顺序表为空不一定要让其中的元素得到释放,在栈区的元素,在函数结束由系统释放),让顺序表为空就让其len为0;

        摧毁函数是在清理完成之后,必须手动释放自己开辟的空间(malloc动态开辟的空间在堆区),list->base 赋空,预防野指针。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
顺序表是一种常见的数据结构,用于存储一组具有相同类型的元素。它的基本操作包括创建、查找、入和删除等。 在C语言中,可以通过使用数组来实现顺序表。我们可以定义一个数组来存储顺序表的元素,然后通过索引来访问和操作其中的元素。引用中的代码展示了一个简单的顺序表的例子,它使用了C语言来实现。在这个例子中,我们可以看到如何创建一个顺序表入元素、删除元素以及查找元素的前驱和后继。 引用中的代码是一个测试顺序表基本操作的例子。它使用了一个自定义的List类来实现顺序表,并对其进行了各种操作,包括入元素、删除元素、查找元素的前驱和后继以及遍历整个顺序表顺序表的结构体定义可以根据具体的需求进行定义。在引用中的代码中,定义了一个结构体ConnTimeout,其中包含了一个int类型的fd和一个time_t类型的timeout成员变量。这个结构体可以用来表示连接超时的信息。 总而言之,顺序表是一种常见的数据结构,可以通过使用数组来实现。在C语言中,可以使用数组和相关的操作来创建、查找、入和删除顺序表中的元素。结构体的定义可以根据具体的需求进行自定义。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [数据结构顺序表c++代码](https://download.csdn.net/download/qq_46546083/13458006)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [C++数据结构顺序表(模板类实现)](https://blog.csdn.net/sagjhdj/article/details/123260460)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [【数据结构顺序表(C++)](https://blog.csdn.net/qq_51604330/article/details/120600041)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值