数据结构c实现之表

博客介绍了抽象数据类型(ADT),重点讲解表ADT。表ADT可理解为按顺序排列的数字集合,其实现方式有简单数组实现和链表实现。数组实现虽能动态指定数据,但需预估大小,易浪费空间,插入删除复杂度高;链表则避免了这些缺点,通过指针操作实现高效的插入和删除。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首先明白一个概念,抽象数据类型(abstract data type,ADT)是一些操作的集合,抽象数据类型是数学的抽象,是对一种数据结构的描述。

表ADT

表的理解很简单,可以理解为按照顺序放的数字,比如A1,A2,A3.。。。。Ax,这个表的长度就是X,如果长度为0,则是空表。

而表的实现,又分为以下两种:

表的简单数组实现*

顾名思义,表的所有操作都是通过数组来实现。虽然数据是动态指定的,但是需要对表的大小的最大值进行估计,通常要估的大一些(可以理解为你定义一个数组,但是不知道具体有多少个元素,但是大概知道有六七个,所以定义的时候会定义大一点稳妥起见),但是这样就会浪费空间,是非常大的局限性。而进行数据的插入删除操作,一般是怎么做的呢?数组中——首先会告诉你在哪里插入,然后那个位置后边的元素一个一个往后移,如果插入的位置是第一个呢?那就是所有的元素都要往后移,复杂度为O(n)。
总是是非常麻烦的,所以一般不用数组来实现表的这种结构。

链表

个人思考,一个技术的出现肯定会有它的原因而且一定是为了优化之前的缺点才出现的。所以链表,为了避免插入和删除的线性开销,允许表不连续存储。
一般用指针,指针结构包括数据元素,和一个指向下一个元素的Next指针(一个大佬带一个指路的弟弟,弟弟指哪里大佬去哪里,一个指一个就这么指下去啦)。
因此,链表有一个特点,就是结构不一定在内存中相连,这样删除或者加入只要改一下Next指针指向的的位置,完成删除或者加入操作。

删除操作
![链表的删除操作(https://img-blog.csdnimg.cn/20190624154158675.png)
加入操作
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值