【软考】数据结构与算法基础 - 数组和链表

一、数组和链表的区别(很简单,但是很常考,记得要回答全面)

什么是数组:
C++语言中, 可以用数组,处理一组数据类型相同的数据,
不可以动态定义数组的大小(使用前,必须指定大小。 )

在实际应用中,用户使用数组之前,无法确定数组的大小
只能够将数组定义成足够大小,多余出来空间可能不被使用,造成内存空间的浪费。

什么是链表:
链表是一种常见的数据组织形式,他采用动态分配内存的形式实现。
需要时,可以用new分配内存空间
不需要时,用delete将已分配的空间释放
不会造成内存空间的浪费。

在这里插入图片描述

从逻辑结构上来看,

数组
数组,必须实现定于固定的长度,
不能适应数据动态增减的情况,
即数组的大小一旦定义就不能改变。

从内存存储的角度看
从访问方式来看

当数据增加时 ,可能超过原先定义的元素的个数;
当数据减少时,造成内存浪费;
数组从栈中分配空间(用new则在堆上创建),
对程序员方便快速,但是自由度小;
数组在内存中是连续的存储,因此可以利用下标索引进行访问;
链表
* 链表动态进行存储分配
* 可以适应数据动态地增减的情况
* 且可以方便地插入、删除数据项。
* 链表从堆中分配空间,自由度大
* 但是申请管理比较麻烦。

链表是链式存储结构,在访问元素时候只能够通过线性方式由前到后顺序的访问,所以访问效率比数组要低。

二、链表的一些操作

如反转,链表存在环路判断,双向链表,循环链表相关操作。

三、队列,栈的应用。(比如对垒在消息队列,站用在递归调用中)

四、二叉树

那种遍历方式及其递归和非递归实现,三种遍历方式的主要应用(后缀表达式),相关的时间复杂度。

五、字符串相关

整型,浮点型和字符串的转换(atoi,atof,itoa)
字符串拷贝注意异常检查,比如空指针,字符串重叠,自赋值,字符串结束符‘\0’等。

六、关于数组 vs 链表,描述错误的是?

A、 数组的大小固定,而链表则天然支持动态扩容
B、 数组使用的是连续内存空间对 CPU 的缓存机制友好,链表则相反
C、 链表随机访问数据性能优于数组
D、 数组支持随机访问,而链表不支持。

  • 9
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

本本本添哥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值