Skip to content

Commit 5532dcc

Browse files
authored
Update 5.4.1栈实现.md
1 parent 8519c06 commit 5532dcc

File tree

1 file changed

+24
-24
lines changed

1 file changed

+24
-24
lines changed

5.4.1栈实现.md

Lines changed: 24 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,27 @@
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

0 commit comments

Comments
 (0)