2.顺序表、双向循环链表代码实现、栈结构&队列结构

物理中的堆栈

既然讲到栈,那我们不如先来看⼀看,堆栈到底是个啥。这个就要从我们的打⼯⼈CPU开始说起

在CPU当中,有⼀个⾮常核心的模块,叫做ALU(算术逻辑单元),也就是执⾏各种计算和逻辑运算操作的⼀个部件,是我们CPU的执⾏单元。⽐如1 + 1 = 2。如果说,有多个运算参与,⽐如111 + 222 + 333,这个时候,他会先计算 111 + 222 ,然后得到⼀个临时结果,再将我们的临时结果和 剩下的数字相加。这个时候,我们就需要将临时结果找个地⽅存⼀下,这个地⽅,我们叫寄存器,他们的名字就是AX,BX,CX,DX等等。临时结果就保存在寄存器中。为了实现更复杂的计算,能不能做特别多的寄存器呀?答案是不能,如果做特别多的寄存器,只会增加我们的CPU设计上的成本和复杂性。 这个时候,就需要从外面找帮手。这个帮手需要什么条件呢?那就是速度要快。然后,计算机的设计者就将目光放在了内存条上面。

接下来,就要在内存条中划出一片专门的区域,用来临时存储数据。既然是专用的,那就需要有个名字。叫做栈。栈其实只是一个乳名,实际上这个区域叫做堆栈。要注意,内存里面还有一个区域,叫做堆。和栈的特性很不一样。所以,栈的本质就是内存中的一个区域。他的特殊之处就在于,CPU从中存取数据的方式。就好像弹夹装子弹,就是先入后出,后入先出。

而CPU中,很多对于数据的操作都要遵循这个规律。在内存中,有一个个的存储单元,在存储单元中&#x

你可能感兴趣的:(链表,数据结构,java)