【数据结构与算法】第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. 多问为什么

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

相关推荐
xywww16814 小时前
AWS 账号权限怎么分:根用户和 IAM 用户区别及日常使用建议
大数据·开发语言·人工智能·python·gpt·云计算·aws
泷寂14 小时前
最小生成树 (MST基础)
算法
Daniel_12315 小时前
数组——总结篇
算法
炸薯条!15 小时前
从零开始学C++ (内存管理)
java·jvm·c++
不懒不懒15 小时前
【针对路面识别数据集,结合三轴加速度标准化数据及多路面识别需求,以下是算法选择与处理方案】
算法
Reart15 小时前
Leetcode 121. 买卖股票的最佳时机(717)
后端·算法
会编程的小孩15 小时前
初识数据类型以及变量定义
数据结构·算法
Reart15 小时前
Leetcode 337.打家劫舍3(717)
后端·算法
执笔论英雄15 小时前
【大模型推理 】 vllm kvconnet 学习
学习·vllm
梅梅绵绵冰15 小时前
数据结构-时间复杂度
数据结构·算法