把内存看作长度为 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 次操作,以如下形式给出: