把内存看作长度为 n
的数组,堆指针 hp
表示下一个要写入的堆位置(从 0 向右生长),栈指针 sp
表示下一个要写入的栈位置(从 n-1 向左生长):
hp = 0
,sp = n-1
,内存为给定初值。hp > sp
⇒ 无可用空间,Memory allocation failure;否则写 a[hp]=x
,hp++
。hp == 0
⇒ 堆空,Invalid heap address;否则 hp--
(不清空内存)。hp > sp
⇒ 无可用空间,Memory allocation failure;否则写 a[sp]=x
,sp--
。sp == n-1
⇒ 栈空,Invalid stack address;否则 sp++
(不清空内存)。众所周知,计算机内存中有堆和栈,堆从低地址向高地址生长,栈从高地址向低地址生长,如下图所示:
小A的电脑的内存可以视作一个一维数组,地址从 0 到 n−1 编号,最开始堆指针指向 0 号位置,栈指针指向 n−1 号位置,接下来小A 将进行 m 次操作,以如下形式给出: