【数据结构与算法】第1篇:为什么要学习数据结构与算法?专栏导学

一、写在前面

你好,我是计算机安禾。

这个专栏,我打算用C语言把常用的数据结构从头实现一遍。从最简单的顺序表,到二叉树、哈希表,大概20多篇。

为什么选C语言?因为C语言足够底层,没有现成的容器可用,你必须自己管理内存、自己操作指针。这个过程虽然麻烦,但学完之后,你对程序底层的理解会深很多。


二、为什么要学这个?

1. 面试要考

不管你是去大厂还是小公司,技术面试基本都会问数据结构和算法。我参加过几次面试,几乎每一轮都有手写代码的环节。提前准备,心里不慌。

2. 代码能跑得更快

同样是存一堆数据,用数组和用链表,在不同场景下性能差别很大。选错了数据结构,程序可能慢几十倍。当你处理的数据量达到百万级的时候,这个问题就很要命了。

3. 看懂源码的底层

很多编程语言的高级特性,底层都是基础数据结构搭起来的。Python的列表是动态数组,字典是哈希表。学了这些,你看源码的时候不会一脸懵。


三、专栏内容安排

我按难度分了几个阶段,从易到难:

阶段 内容 大概篇数
基础 C语言核心回顾(指针、结构体、内存) 2-3篇
线性结构 顺序表、单链表、双向链表 5-6篇
受限线性表 栈、队列 3-4篇
树形结构 二叉树、二叉搜索树、AVL树 5-6篇
排序 快排、归并、堆排等常用排序 4-5篇
查找 二分查找、哈希表 2-3篇
图的遍历、最短路径 3-4篇

每个知识点我会先讲原理,再手写代码,最后给一个综合案例。


四、开发环境搭建

代码我主要在Windows下写,用Dev-C++和VS Code都测试过。你选一个就行。

方案一:Dev-C++(新手推荐)

轻量、简单、不用配置。

  1. 去官网或镜像站下载Dev-C++ 5.11

  2. 安装时语言选中文,一路下一步

  3. 打开后新建源文件,写代码,按F11编译运行

方案二:VS Code

功能强大,但需要自己配编译器。

  1. 下载VS Code并安装

  2. 在扩展里搜索"C/C++",安装微软官方的插件

  3. 安装编译器:

    • Windows:装MinGW-w64,配环境变量

    • Mac:终端执行xcode-select --install

    • Linux:sudo apt install gcc

  4. 按网上教程配置tasks.json(第一次配稍微麻烦点)

验证一下

新建一个test.c,写几行代码:

c

复制代码
#include <stdio.h>

int main() {
    printf("环境没问题\n");
    return 0;
}

能正常输出,就说明环境好了。


五、你需要的基础

  • C语言基本语法:变量、循环、分支、函数

  • 指针的基本概念:知道*&的含义

  • 结构体的基本用法:定义struct和访问成员

如果这些还不熟,建议先花一周补一下C语言基础,不然看代码会比较吃力。


六、怎么学效果最好

1. 自己敲一遍

每一篇的代码,我都建议你手动敲一遍。复制粘贴学不到东西,敲的过程中你会遇到各种小问题,解决这些问题才是真正的收获。

2. 画图

链表、树这些东西,光看代码很抽象。拿张纸画一画,指针指到哪里、节点怎么连接,一下子就清楚了。

3. 多问为什么

为什么链表插入比数组快?为什么二叉树查找比链表快?多问几个为什么,理解会更深。

相关推荐
wabs6669 小时前
关于贪心算法的思考
算法·贪心算法
社交怪人10 小时前
【判断大小】信息学奥赛一本通C语言解法(题号1043)
算法
lengxuemo10 小时前
ICC2学习笔记之Placement and Optimization
笔记·学习
温柔只给梦中人10 小时前
NLP学习:注意力机制
人工智能·学习·自然语言处理
Snasph10 小时前
GNU Make 用户手册(中文版)
服务器·算法·gnu
江澎涌10 小时前
拆解与 AI 的一次对话
人工智能·算法·程序员
sheeta199811 小时前
LeetCode 每日一题笔记 日期:2026.06.02 题目:3635. 最早完成陆地和水上游乐设施的时间 II
笔记·算法·leetcode
Lsk_Smion11 小时前
力扣实训 _ [102].层序遍历--前序--后续_递归与非递归的实现
数据结构·算法·leetcode
逐影者39711 小时前
ch592f学习
学习
小满Autumn12 小时前
MVVM Light 架构笔记:定位器、命令、消息与 IoC 实践
笔记·学习·架构·c#·上位机·mvvm