数据结构与算法常见面试题1
1.八大数据结构及其应用场景(数组、栈、链表、树、图、堆、散列表) 1.数组 数据结构中最基本的一个结构就是线性结构,而线性结构又分为连续存储结构和离散存储结构。连续存储结构其实就是数组。 在程序设计中,为了处理方便, 把具有相同类型的若干变量按有序的形式组织起来。这些按序排列的同类数据元素的集合称为数组。一个数组可以分解为多个数组元素,这些数组元素可以是基本数据类型或是构造类型。因此按数组元素的类型不同,数组又可分为数值数组、字符数组、指针数组、结构数组等各种类别。 使用场景 数组在以下三个情形下很有用: 1)数据量较小。 2)数据规模已知。 3)随机访问,修改元素值。 如果插入速度很重要,选择无序数组。如果查找速度很重要,选择有序数组,并使用二分查找。 缺点 1)需要预先知道数据规模 2)插入效率低,因为需要移动大量元素。 2.栈 是只能在某一端插入和删除的特殊线性表。它按照先进后出的原则存储数据,先进入的数据被压入栈底,最后的数据在栈顶,需要读数据的时候从栈顶开始弹出数据(最后一个数据被第一个读出来)。 使用场景 1.十进制与其它进制间的转换 125→1111111 2.行编辑器 #退格 @清除 3.平衡符号的判断 {[()()]} 4.中缀表达式转后缀表达式 顺序栈 优点 1)在输入数据量可预知的情形下,可以使用数组实现栈,并且数组实现的栈效率更高