首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

数据结构面试经典问题汇总及答案_数据结构基础面试题

1.数组和链表的区别,请详细解释。 从逻辑结构来看: a) 数组必须事先定义固定的长度(元素个数),不能适应数据动态地增减的情况。当数据增加时,可能超出原先定义的元素个数;当数据减少时,造成内存浪费;数组可以根据下标直接存取。 b) 链表动态地进行存储分配,可以适应数据动态地增减的情况,且可以方便地插入、删除数据项。(数组中插入、删除数据项时,需要移动其它数据项,非常繁琐)链表必须根据next指针找到下一个元素 从内存存储来看: a) (静态)数组从栈中分配空间, 对于程序员方便快速,但是自由度小 b) 链表从堆中分配空间, 自由度大但是申请管理比较麻烦 从上面的比较可以看出,如果需要快速访问数据,很少或不插入和删除元素,就应该用数组;相反, 如果需要经常插入和删除元素就需要用链表数据结构了。

02

八大排序算法(java实现) 冒泡排序 快速排序 堆排序 归并排序 等

一、直接插入 - 1.基本思路 - 2.代码实现 - 3.时间复杂度和空间复杂度二、希尔排序 - 1.基本思路 - 2.代码实现 - 3.时间复杂度和空间复杂度三、简单选择 - 1.基本思路 - 2.代码实现 - 3.时间复杂度和空间复杂度四、堆排序 - 1.基本思路 - 2.代码实现 - 3.时间复杂度和空间复杂度五、冒泡排序 - 1.基本思路 - 2.代码实现 - 3.时间复杂度和空间复杂度六、快速排序 - 1.基本思路 - 2.代码实现 - 3.时间复杂度和空间复杂度七、归并排序 - 1.基本思路 - 2.代码实现 - 3.时间复杂度和空间复杂度八、基数排序 - 1.基本思路 - 2.代码实现 - 3.时间复杂度和空间复杂度总结

02

【数据结构和算法】--- 二叉树(3)--二叉树链式结构的实现(1)

在学习二叉树的基本操作前,需先要创建一棵二叉树,然后才能学习其相关的基本操作。由于现在大家对二叉树结构掌握还不够深入,且为了方便后面的介绍,此处手动快速创建一棵简单的二叉树,快速进入二叉树操作学习,等二叉树结构了解的差不多时,我们反过头再来研究二叉树真正的创建方式。 基于二叉树的链式结构,于是可以先malloc动态开辟出二叉树的每个节点并初始化,然后通过节点中的指针struct BinaryTreeNode* left(指向左树)和struct BinaryTreeNode* right(指向右树),将各个节点连接起来,最后大致模拟出了一棵二叉树,代码如下:

01
领券