CS第三周的学习处于从入门到逐步深入的关键过渡阶段,需要平衡基础巩固和新内容吸收,避免盲目追赶进度导致知识点掌握不扎实。这一周的学习重点围绕四个核心方向展开,每个方向都有对应的学习目标和实践要求。

一、数据结构基础巩固
第三周通常会接触到线性表的基础结构,重点要理解数组和链表的核心区别,以及它们各自适用的场景。这部分内容不要只停留在概念记忆,最好能通过代码实现简单的操作来加深理解。
比如实现单链表的节点定义和头部插入操作,可以参考下面的示例代码:
# 定义单链表节点类
class ListNode:
def __init__(self, val=0, next=None):
self.val = val # 节点存储的值
self.next = next # 指向下一个节点的指针
# 实现单链表头部插入节点的方法
def insert_at_head(head, val):
new_node = ListNode(val)
new_node.next = head
return new_node # 返回新的头节点
# 测试代码
if __name__ == "__main__":
# 初始链表为空
head = None
# 头部插入3个节点
head = insert_at_head(head, 3)
head = insert_at_head(head, 2)
head = insert_at_head(head, 1)
# 遍历链表打印结果,预期输出1 2 3
curr = head
while curr:
print(curr.val, end=" ")
curr = curr.next
二、简单算法逻辑训练
这一阶段的算法学习不需要接触复杂的高阶算法,重点放在基础逻辑的实现上,比如排序和查找的基础算法。冒泡排序、选择排序都是适合第三周练习的内容,能帮助你理解算法的时间复杂度和空间复杂度的基本概念。
下面是冒泡排序的Python实现示例:
def bubble_sort(arr):
n = len(arr)
# 外层循环控制排序轮数
for i in range(n):
# 内层循环控制每轮比较的次数
for j in range(0, n-i-1):
# 如果前面的元素比后面的大,就交换位置
if arr[j] > arr[j+1]:
arr[j], arr[j+1] = arr[j+1], arr[j]
return arr
# 测试冒泡排序
test_arr = [64, 34, 25, 12, 22, 11, 90]
sorted_arr = bubble_sort(test_arr)
print("排序后的数组:", sorted_arr)
三、计算机组成原理入门
第三周通常会开始接触计算机的基本组成,重点了解CPU、内存、输入输出设备的基本功能,以及数据在这些部件之间的流动过程。这部分内容偏理论,可以结合简单的硬件模拟场景来理解,不需要深入底层电路细节。
可以通过下面的表格梳理核心部件的基础功能:
| 部件名称 | 核心功能 | 常见类比 |
|---|---|---|
| CPU | 执行指令、处理数据 | 工厂的加工车间 |
| 内存 | 临时存储运行中的程序和数据 | 车间的临时仓库 |
| 硬盘 | 持久化存储数据 | 工厂的 permanent 仓库 |
| 输入输出设备 | 实现人和计算机的信息交互 | 车间的进出口通道 |
四、编程语法常用特性熟练
如果第三周还在学习编程入门语法,要重点掌握循环、条件判断、函数定义这些常用特性,避免后续写复杂程序时还要回头查基础语法。可以多写一些小练习,比如实现简单的计算器、判断素数这类功能。
下面是判断素数的函数实现示例:
def is_prime(num):
# 小于2的数不是素数
if num < 2:
return False
# 从2到num的平方根遍历,判断是否能整除
for i in range(2, int(num ** 0.5) + 1):
if num % i == 0:
return False
return True
# 测试函数
test_num = 17
if is_prime(test_num):
print(f"{test_num}是素数")
else:
print(f"{test_num}不是素数")
学习建议
第三周的学习不要追求进度过快,每天可以留30分钟左右的时间做知识点复盘,把当天学的内容用简单的语言讲给自己听,确认没有理解盲区。如果遇到不懂的问题,优先查阅教材和官方文档,再考虑搜索相关解答,避免直接复制代码跳过思考过程。另外可以每周抽1小时做综合练习,把数据结构、算法、语法的内容结合起来,比如用链表实现一个简单的待办事项管理功能,能更好地串联知识点。