首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >《计算机是怎么跑起来的》第六章读后小结

《计算机是怎么跑起来的》第六章读后小结

作者头像
Lihua奏
发布2026-06-23 20:28:03
发布2026-06-23 20:28:03
990
举报

《计算机是怎么跑起来的》第六章读后小结

数据结构

这章讲的是 数据结构

计算机处理的数据都存储在 内存 的集成电路中,内存有多个数据存储单元,每个单元存8比特(8比特 = 1字节),并且每个单元都有唯一的编号,就叫做 地址,相信对指针了解的不会对地址陌生

依靠直接指定内存地址来进行编程太过麻烦,所以几乎所有的编程语言中,都有变量这个概念,它可以用来代替内存地址的名字,看起来更加直观

代码语言:javascript
复制
char a
a = 123

当程序运行时,由操作系统为我们分配没有使用的内存空间给变量,所以变量可以直接读取到地址,并且能使用数据

如果不了解数据结构,那么编程时就只能一个挨一个地定义若干个单独的变量

为什么需要数据结构

举例:把三个数据进行降序

代码语言:javascript
复制
char a, b, c, tmp; 
a = 123; 
b = 124; 
c = 125; 
if (b > a) { 
 tmp = b; 
 b = a;
 a = tmp; 
} 
if (c > a) { 
 tmp = c; 
 c = a; 
 a = tmp; 
} 
if (c > b) { 
 tmp = c; 
 c = b; 
 b = tmp; 
}

这样也能实现,但是,如果数据有一万个呢?那就真的很麻烦了

那么我们就来了解一下 数据结构

数据结构,本质上就是 “把数据怎么摆放、怎么组织、怎么取用” 的方法

可以想一下中药店里的中药柜,每个柜子里都对应一个中药,如果所有中药混在一起,不仅不好找,而且还容易找错

常见的数据结构包含 数组队列链表

数组

数组 是数据结构的基础,像 顺序查找,冒泡排序等等,都是需要数组的

那么什么是数组?可以把他想象成一个排列整齐的电影院的座椅, 优点是找座位非常快,缺点就是如果想在中间塞一把椅子进去,会很麻烦

链表

这时就有了 链表

看链表怎么写

代码语言:javascript
复制
struct TestResult { 
char Chinese;      /* 语文成绩 */ 
char Math;        /* 数学成绩 */ 
char English;      /* 英语成绩 */ 
struct TestResult *Ptr; /* 指向其他元素的指针 */ 
};

不太好理解,看图

在这里,如果我们想要在中间插入元素进去的话,只需要把原本的连接关系改成指向元素 x(也就是你想插入的元素)就可以了 缺点就是查找慢,因为它必须顺着开始元素一个个找下去

接下来是 ,栈对于数据的存取方式是LIFO(Last In, First Out)先进后出,就像洗盘子,你洗完盘子,一个个往上堆,但你用盘子的时候,肯定不是从下面去抽,而是从上面去拿,

代码语言:javascript
复制
char Stack[100];     /* 作为栈基础的数组 */
char StackPointer = 0;  /* 栈顶指针 */

/* 入栈函数 */
void Push(char Data) {
 /* 把数据存入栈顶指针所指的位置 */
 Stack[StackPointer] = Data;
 /* 更新栈顶指针的值 */
 StackPointer++;
}

/* 出栈函数 */
char Pop() {
 /* 更新栈顶指针的值 */
 StackPointer--;
 /* 把数据从栈顶指针所指的位置取出来 */
 return Stack[StackPointer];
}

它适合做什么呢,像浏览器的撤回、Ctrl+Z、游戏中死了之后读取最后一次的存档

队列

队列,顾名思义,队列对于数据的存取方式是FIFO(First In, First Out),就像排队打饭一样,先到的人先吃

那它适合做什么,像排号系统、打印任务排队这些

接下来是 ,树可以分叉,就有了二叉树、三叉树。很简单,理解了链表的话就直接看代码就懂了

代码语言:javascript
复制
struct TestResult { 
char Chinese;      /* 语文成绩 */ 
char Math;        /* 数学成绩 */ 
char English;      /* 英语成绩 */ 
struct TestResult *Ptr1; /* 指向其他元素的指针 */ 
struct TestResult *Ptr2; /* 指向其他元素的指针 */ 

};

那么树适合做什么?像文件夹结构、公司组织图等等,它们都不是随便乱连,而是一层包一层

接下来是 ,可以想象一下城市地铁图 (随便截的,将就看一下)

图的核心本质为,我不关注谁是源头,我只关注谁和谁之间有连接关系

为什么数据结构重要

这一章读下来,我感觉数据结构的重要性就在于:它不是单纯在讲“数据有哪些名字”,而是在讲数据应该怎么组织,程序才能更方便地处理它们。如果数据组织得好,查找、插入、删除、排序这些操作都会更顺;如果组织得不好,程序就会越写越麻烦。

从数组、链表、栈、队列,再到树和图,它们其实都在回答同一个问题:面对不同类型的数据和不同的使用场景,我们到底该用什么方式来存放和操作这些数据。

本章小结

这一章让我开始明白,数据结构并不只是几个要背下来的名词,而是编程时组织数据的方法。数组适合快速按位置访问,链表适合插入和调整连接关系,栈和队列强调的是“怎么进、怎么出”,树和图则更适合表示层级关系和连接关系。

如果说前面几章让我知道程序是怎么执行的,那么这一章更像是在告诉我:程序不只是“会跑”就够了,还得考虑数据怎么放,后面才更好处理。这也让我意识到,写程序时不仅要会写语法,还要学会选择合适的数据结构。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2026-05-20,如有侵权请联系 cloudcommunity@tencent.com 删除
目录
  • 《计算机是怎么跑起来的》第六章读后小结
    • 数据结构
    • 为什么需要数据结构
    • 数组
    • 链表
    • 队列
    • 为什么数据结构重要
    • 本章小结
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档