数据结构-绪论

数据结构是研究如何将数据以一种特定的方式存储到内存中。

冯诺依曼架构/Von Neumann architecture

img

黑色箭头表示数据信号。

CPU Central Processing Unit

包括运算器,控制器,寄存器(Register)等器件。

存储器与寄存器的关系

CPU <——>寄存器 <—->缓存<—–>内存

存储器在CPU外。一般指硬盘,U盘等可以在切断电源后保存资料的设备。容量一般比较大,缺点是读写速度都很慢,普通的机械硬盘读写速度一般是50MB/S左右。

缓存就是数据交换的缓冲区(称作Cache),当某一硬件要读取数据时,会首先从缓存中查找需要的数据,如果找到了则直接执行,找不到的话则从内存中找。由于缓存的运行速度比内存快得多,故缓存的作用就是帮助硬件更快地运行。

寄存器一般是指由基本的RS触发器结构衍生出来的D触发,就是一些与非门构成的结构,一般整合在CPU内。其读写速度跟CPU的运行速度基本匹配,但因为性能优越,所以造价昂贵。

内存分为ROM和RAM


实验课

%g的使用

%g%f 是C语言中用于格式化输出浮点数的两种不同格式说明符,它们在输出方面有一些区别:

%f:这个格式说明符用于输出浮点数的固定小数点表示形式,通常会显示小数点后的一定位数(默认是6位)。

1
2
3
num = 3.14159;
printf("%f", num);
printf("%g", num);

输出:

1
2
3.141590
1.23456e-05

%g:这个格式说明符用于输出浮点数的一种更通用的表示形式,它会根据数字的大小和精度来动态选择使用固定小数点表示法(%f)或指数表示法(%e%E)以得到更简洁的输出。

%g 也可以在整数部分末尾的零被省略掉,以更简洁的形式输出。例如,**100.00 会以 %f 输出为 100.000000,但以 %g 输出为 100。**

结构体的访问

.运算符和->运算符来访问结构体的成员有不同的语法规则和含义。

  1. 对于结构体变量(例如 struct stu a;),你可以使用.运算符来访问其成员。例如,a.eng 表示访问结构体变量 a 中的 eng 成员,而 a.maths 表示访问 maths 成员。
  2. 对于指向结构体的指针(例如 struct stu* a;),你应该使用->运算符来访问其成员。例如,a->eng 表示访问指针 a 指向的结构体中的 eng 成员,而 a->maths 表示访问 maths 成员。

总结

What is DATA Structure?

DS =Data elements + Relationships of data elements

What is Program?

Data structures + Algorithms = Program

What is ADT (Abstract Data Structure)?

ADT = DS + Operations

T(N)时间复杂度

S(N)空间复杂度