数据结构-基础
1.什么是数据结构?
数据结构是计算机存储、组织数据的方式。数据结构是指数据之间存在一种换种多种特定关系的数据元素的集合。结构包括物理结构和逻辑结构。
数据逻辑结构包括4种:
集合:数据元素之间除了有相同的数据类型外,无其他关系
线性结构:数据元素是一对一的关系——线性表、队列、堆栈
树形结构:数据元素是一对多的关系
图状结构:数据元素是多对多关系
2.解释下顺序存储和链式存储
顺序存储结构是用一段连续的存储空间来存放数据元素,可以随机访问,访问效率较高;链式存储结构是用任意存储空间来存放数据元素,不可以进行随机访问,访问效率较低。
3.头指针和头节点的区别
头指针:指向第一个节点存储位置的指针,具有标识作用,头指针是链表的必要元素,无论链表是否为空,头指针都会存在。
头结点:是放在第一个元素节点之前,便于在第一个元素节点之前进行插入和删除的操作,头节点不是链表的必要元素,可有可无,头结点的数据域也可以不存储任何信息
4.线性结构的特点
集合中必存在唯一的一个“第一元素”
集合中必存在唯一的一个“最后元素”
除最后元素外,其余元素都有唯一的后继
除第一个元素外,其余元素都有唯一的前驱
5.数组和链表的区别
从逻辑结构看:数据的存储长度是固定的,它不能适应于数据动态增减的情况。链表能够动态分配存储空间以适应数据动态增减的情况,并且更易于插入和删除操作;
从访问方式来看:数组在内存中是一段连续的存储空间,可以通过下标对数据进行随机访问,访问效率高。链表是链式存储结构,存储空间不是必须连续的,可以是任意的,访问必须从前往后依次进行,访问效率相对于数据来看是较低的
如果从第i个位置插入多个元素,对于数据每一次插入都要往后移动元素,每一次时间复杂度是O(n),而对于单链表来说,只需要第一次查找i位置时间复杂度为O(n),其余的删除或者插入操作时间复杂度均为O(1),提高了删除和插入操作次效率。