跳到主要内容

解题方法

Array-based Stack(数组实现栈)

数据结构定义

CONSTANT maxSize ← 10
DECLARE stack : ARRAY[0 : maxSize - 1] OF INTEGER
DECLARE top : INTEGER // 初始值 ← -1
  • top 指向当前栈顶元素的下标
  • 空栈时 top = -1
  • 满栈时 top = maxSize - 1

Push — 三步骤

步骤伪代码说明
1. 检查IF top = maxSize - 1是否溢出
2. 自增top ← top + 1移动指针
3. 赋值stack[top] ← item放入元素

Pop — 三步骤

步骤伪代码说明
1. 检查IF top = -1是否下溢
2. 取值item ← stack[top]取出元素
3. 自减top ← top - 1移动指针
4. 返回RETURN item不要忘记返回值

函数式写法示例

FUNCTION push(BYREF stack[] : ARRAY, BYREF top : INTEGER, item : INTEGER, maxSize : INTEGER) RETURNS BOOLEAN
IF top = maxSize - 1 THEN
OUTPUT "Stack Overflow"
RETURN FALSE
ELSE
top ← top + 1
stack[top] ← item
RETURN TRUE
ENDIF
ENDFUNCTION
FUNCTION pop(BYREF stack[] : ARRAY, BYREF top : INTEGER) RETURNS INTEGER
IF top = -1 THEN
OUTPUT "Stack Underflow"
RETURN -1
ELSE
DECLARE item : INTEGER
item ← stack[top]
top ← top - 1
RETURN item
ENDIF
ENDFUNCTION
Important

Parameters passed BYREF because both stack[] and top are modified inside the procedure/function.