File tree Expand file tree Collapse file tree 1 file changed +24
-24
lines changed
Expand file tree Collapse file tree 1 file changed +24
-24
lines changed Original file line number Diff line number Diff line change 1- - 栈实现
2- - 问题:
3- - 讨论栈数据结构。使用链表或动态数组在C中实现栈,并且说出选择链表或动态数组的原因。设计的栈接口应完整、一致且易于使用。
4- - 考察点:
5- 1 . 候选人对基本数据结构的了解
6- 2 . 候选人编写程序来操作这些结构的能力
7- 3 . 候选人为一组程序设计一致的接口的能力
8- - 解释利弊:
9- - 无论选择哪一种,都要向面试官说明两种方法的利弊。
10- - 动态数组的主要优点:
11- 1. 可以随机访问(尽管在栈的实现中,这一点不起作用)
12- 2. 良好的空间局部性。动态数组中的相邻元素在存储器中往往也是相邻的,于是实现的栈会更快。
13- - 动态数组的主要缺点:
14- 1. 实现起来比链表更复杂。
15- 2. 扩容的操作费时,因为需要将旧元素从旧数组复制到新数组。
16- - 链表的主要优点:
17- 1. 向头部插入元素的时间复杂度始终是O(1)
18- 2. 在头部删除元素的时间复杂度始终是O(1)
19- - 链表的主要缺点:
20- 1. 每次插入元素时需要分配内存,分配内存的时间会比较长
21- 2. 不能随机访问元素
22- - 两者的对比:
23- 1. 插入时间:链表插入元素的时间复杂度始终是O(1);而动态数组插入元素时,申请到的内存可能会满了,这时就必须扩容,扩容的操作会比较费时。
24- 2. 访问时间:动态数组访问某元素的时间复杂度始终是O(1);而链表访问某元素的时间复杂度是O(n)
1+
2+ - 问题:
3+ - 讨论栈数据结构。使用链表或动态数组在C中实现栈,并且说出选择链表或动态数组的原因。设计的栈接口应完整、一致且易于使用。
4+ - 考察点:
5+ 1 . 候选人对基本数据结构的了解
6+ 2 . 候选人编写程序来操作这些结构的能力
7+ 3 . 候选人为一组程序设计一致的接口的能力
8+ - 解释利弊:
9+ - 无论选择哪一种,都要向面试官说明两种方法的利弊。
10+ - 动态数组的主要优点:
11+ 1. 可以随机访问(尽管在栈的实现中,这一点不起作用)
12+ 2. 良好的空间局部性。动态数组中的相邻元素在存储器中往往也是相邻的,于是实现的栈会更快。
13+ - 动态数组的主要缺点:
14+ 1. 实现起来比链表更复杂。
15+ 2. 扩容的操作费时,因为需要将旧元素从旧数组复制到新数组。
16+ - 链表的主要优点:
17+ 1. 向头部插入元素的时间复杂度始终是O(1)
18+ 2. 在头部删除元素的时间复杂度始终是O(1)
19+ - 链表的主要缺点:
20+ 1. 每次插入元素时需要分配内存,分配内存的时间会比较长
21+ 2. 不能随机访问元素
22+ - 两者的对比:
23+ 1. 插入时间:链表插入元素的时间复杂度始终是O(1);而动态数组插入元素时,申请到的内存可能会满了,这时就必须扩容,扩容的操作会比较费时。
24+ 2. 访问时间:动态数组访问某元素的时间复杂度始终是O(1);而链表访问某元素的时间复杂度是O(n)
2525
2626 代码实现:
2727
You can’t perform that action at this time.
0 commit comments