c++面试常见题·Part 2 数据结构和STL

  • 常用数据结构

数组 :分配空间固定,地址连续,随机取一个数时间复杂度为O(1)

链表(单链表,双链表) 适合快速增删

栈(后进先出)

队列(FIFO先进先出)

树:二叉树遍历(递归方式和非递归方式 )红黑树  B树

图  主要考察路径查找

  • STL与底层实现:

顺序容器:

vector 数组

list 双向链表

deque 双端队列 中央控制器和多个缓冲区 适合首尾进行存取操作

stack list或deque

queue list或deque

priority_queue 底层一般为vector,用堆的管理规则

后面新增:sList 单向链表

关联容器:

map 红黑树 每一节点包含<key,value>,缺省时递增有序 搜索时间复杂度为log(n)

multimap红黑树 

hashmap 哈希表

hash_multimap哈希表

unordered_map 哈希表 无序  搜索时间复杂度为log(1),最坏为log(n)

------------------------------------------------------------------------------------------------------------------------------------

set 红黑树 每一节点只包含一个元素,元素不重复,有序

multiset红黑树

hashset哈希表

hash_multiset哈希表

unordered_set 哈希表

考点

1.删除(有序/无序)数组中重复出现的数字【数组、vector】

2.判断单链表是否有环,环的入点,环的长度,链表长度【链表】

3.判断两个单链表是否有公共节点

4.反转单链表

5.查找单链表的倒数第k个节点,要求只能遍历一次链表

6.两个有序单链表合并成一个有序链表 

7.两个栈实现队列

8.两个队列实现一个栈

9.图的深度优先,广度优先,Dijkstra等算法

10.最大堆和最小堆

11.红黑树的特性和操作时间复杂度

12.哈希表解决冲突的方法

13.未完待续....

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值