链表、结构体和数组对比

结构体和数组

1、结构体可以存不同类型的元素,而数组只能存同一类型
2、结构体类型需要我们自已定义.数组是用别的类型加[元素个数]
3、结构体内存分配方式很特别,使用对齐原则,不一定是所有元素的字节数和,而数组一定是所有元素的字节数和.
4、结构体指针可以指针名->结构体元素名(取元素);数组不行
5、结构体嵌套可以使用点语法逐级寻找,数组不能

数组和链表

1、数组保存在栈空间中,由编译器自动分配。链表需要程序员自己申请空间,数据保存在堆空间中。

2、数组在内存中占用连续的内存空间,在编译阶段就已经确定了数组的大小,在程序运行时依据预定大小预留空间。链表的每个节点在程序运行时按需逐个申请,节点与节点之间不连续。所以数组空间利用率低,可能存在空间浪费情况。而且数组扩容很麻烦,由于空间固定,所以需要申请一个更大的空间,将旧空间的数据全部移动到新空间

3、数组插入数据和删除数据效率低,插入数据时,待插入位置的的元素和它后面的所有元素都需要向后移动,删除数据时,待删除位置后面的所有元素都需要向前移动。链表删除效率高,只需要将对应节点前一个节点指向对应节点下一个节点即可。

4、数组查询效率高,数组的内存是连续的,想要访问那个元素,直接从数组的首地址处向后偏移就可以访问到了。链表的空间是分散的,所以不具有随机访问性,如要需要访问某个位置的数据,需要从第一个数据开始找起,依次往后遍历,直到找到待查询的位置,故可能在查找某个元素时,时间复杂度达到O(N)

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值