程序中的变量是指什么?
变量是数据的容器。变量中所存储的数据是可以改变的。变量的实质是按照变量所存储数据的大小被分配到的一块内存空间。
要点1:了解内存和变量的关系
计算机所处理的数据都存储在了被称为内存的IC中。在一般的个人计算机中,内存内部分割成了若干个数据存储单元,每个单元可以存储8比特的数据。
因为依靠指定地址的方式编写程序很麻烦,所以在语言中,都是使用变量把数据存储进内存,或从内存中把数据读出来的。
对于程序员来说,他们并不需要知道变量a被存储到内存空间中的哪个地址上了。因为当程序运行时是由操作系统为我们从尚未使用的内存空间中划分出一部分分配给变量a的。
要点2:了解作为数据结构基础的数组
数组实际上是为了存储多个数据而在内存上集中分配出的一块内存空间,并且为这块空间整体赋予了一个名字。使用数组可以更加高效地编写出能够实现排序等算法的程序。
数组是数据结构的基础,之所以这么说是因为数组反映了内存的物理结构本身。在内存中存储数据的空间是连续分布的。而在程序中,往往要从内存整体分配出一块连续的空间以供使用
要点3:了解数组的应用——作为典型算法的数据结构
数组是数据结构的基础,只要使用数组就能通过程序实现各种各样的算法以处理大量的数据。
通过使用数组和for语句,就能编写出实现了线性搜索和冒泡排序算法的程序。
要点4:了解并掌握典型数据结构的类型和概念
数组是一种直接利用内存物理结构(计算机的特性)的基本的数据结构。不过还有一些数据结构是数据无法实现的。主要有以下一些:
栈:把数据像小山一样堆积起来;队列:把数据排成一队;链表:可以任意地改变数据的排列顺序;二叉树:把数据分为两路排列
要点5:了解栈和队列的实现方法
栈和队列的相似点在于,它们都可以把不能立刻处理的数据暂存起来;不同点在于,栈对所存储数据的存取方式是LIFO的,而队列对所存储数据的存取方式是FIFO的。
在实现栈这种数据结构时,首先要定义一个数组和一个变量。数组中所包含的元素个数就是栈的大小。变量中则存储着一个索引,指向存储在栈中顶端的数据,该变量被称为栈顶指针。栈的大小可以根据程序的需求任意指定。通过使用由数组、栈顶指针以及入栈函数和出栈函数所构成的集合,就能实现栈这种数据结构了。
实现队列的数据结构的几个要点:1. 一个任意大小的数组;2. 一个用于存放排在队头的数据对应的索引的变量;3. 一个用于存放排在队尾的数据对应的索引的变量;4. 一对儿函数,分别用于把数据存入到队列和从队列中把数据取出来。
要点6:了解结构体的组成
所谓结构体,就是把若干个数据项汇集到一处并赋予其名字后所形成的一个整体。
一旦定义完结构体,就可以把结构体当作是一种数据类型,用它来定义定量。被汇集到结构体中的每个数据项被称作“结构体成员”。
接下来只要巧妙地运用结构体的数组就可以实现链表和二叉树了。
要点7:了解链表和二叉树的实现方法
链表是一种类似数组的数据结构,这个“数组”中的每个元素和另一个元素都好像是手拉手一样。
链表中的一个结构体元素成员ptr存储了数组中另一个元素的地址。存储着本元素不接下来该与哪个元素相连的信息,即下一个元素的地址。ptr是以结构体的指针为数据类型的成员。这种特殊的结构体可以称为“自我引用的结构体”。
所以只要替换了ptr的值,就可以对数组中的元素排序,使元素的排列顺序不同于其在内存上的物理排列顺序。
在二叉树的实现中,用的还是自我引用的结构体,只不过要改为要带两个连接信息的成员的自我引用结构体。
二叉树多用于实现那些用于搜索数据的算法。因为搜索数据时并不是像简单数组那样沿一条线搜索,而是寻着二叉树不断生长出来的两要树杈中的某一枝搜索。