那些年,我们被问到的数据结构

作为一个非CS专业的应届生,在面试的时候经常会被问到关于数据结构中的概念以及算法实现。既然要成为一名程序员,那么掌握数据结构也是无可厚非的,毕竟有着很多的应用与实现。所以自己就整理了一些关于数据结构应该掌握的概念和算法,以及面试常问的问题(实现语言用的Java),有些算法可能手写不出,但思路一定要会,自己也是菜鸟一枚,也在学习。

《那些年,我们被问到的数据结构》

线性表

线性表的相关概念,对于其中的链表,栈,队列,后面展开介绍。

线性表 及Java实现 顺序表、链表、栈、队列

栈和队

1.栈的创建
2.队列的创建
3.两个栈实现一个队列
4.两个队列实现一个栈
5.设计含最小函数min()的栈,要求min、push、pop、的时间复杂度都是O(1)
6.判断栈的push和pop序列是否一致

栈和队列的面试题Java实现

链表

1、单链表的创建和遍历
2、求单链表中节点的个数
3、查找单链表中的倒数第k个结点(剑指offer,题15)
4、查找单链表中的中间结点
5、合并两个有序的单链表,合并之后的链表依然有序【出现频率高】(剑指offer,题17)
6、单链表的反转【出现频率最高】(剑指offer,题16)
7、从尾到头打印单链表(剑指offer,题5)
8、判断单链表是否有环
9、取出有环链表中,环的长度
10、单链表中,取出环的起始点(剑指offer,题56)。本题需利用上面的第8题和第9题。
11、判断两个单链表相交的第一个交点(剑指offer,题37)

链表面试题Java实现

上个文章中对链表反转的递归方法没给出,这篇有:Java反转单链表实战

排序

1.冒泡排序
2.插入排序
3.选择排序
4.希尔排序
5.快速排序
6.归并排序
7.堆排序

排序算法的比较与java实现

1.二叉查找树
二叉查找树(三)之 Java的实现
2.树的深度遍历与广度遍历
树的深度优先遍历和广度优先遍历的原理和java实现代码
3.平衡树
AVL树(三)之 Java的实现
4.红黑树
红黑树原理解析以及Java实现
5.哈夫曼树
哈夫曼树(三)之 Java详解
6.并查集
数据结构–并查集的原理及实现
7.B树系列  
B-树,B+树,B*树

1.图的基础概念
图的理论基础
2.深度遍历与广度遍历
图的遍历之 深度优先搜索和广度优先搜索
3.单源最短路径
Dijkstra算法(三)之 Java详解
4.多源最短路径
Floyd算法(三)之 Java详解
5.最小生成树
Prim算法(三)之 Java详解
Kruskal算法(三)之 Java详解
6.拓扑排序
拓扑排序(三)之 Java详解

散列查找

1.散列表的概念
散列表
2.散列表的一些算法应用
从头到尾解析Hash表算法

散列表可以和Java中集合HashMap等对照学习。

推荐书籍:《大话数据结构》

《那些年,我们被问到的数据结构》

《剑指Offer》

《那些年,我们被问到的数据结构》

【剑指Offer学习】【所有面试题汇总】

推荐课程学习:数据结构,是浙大的两位老师讲的,很好,在中国大学MOOC上。

《那些年,我们被问到的数据结构》

后续有新的内容会持续更新…….
    原文作者:Ruheng
    原文地址: https://www.jianshu.com/p/796f3616d618
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞