# 3.4.栈的抽象数据类型

栈的抽象数据类型由以下结构和操作定义。如上所述，栈被构造为项的有序集合，其中项被添加和从末端移除的位置称为“顶部”。栈是有序的 LIFO 。栈操作如下。

* Stack() 创建一个空的新栈。 它不需要参数，并返回一个空栈。
* push(item)将一个新项添加到栈的顶部。它需要 item 做参数并不返回任何内容。
* pop() 从栈中删除顶部项。它不需要参数并返回 item 。栈被修改。
* peek() 从栈返回顶部项，但不会删除它。不需要参数。 不修改栈。
* isEmpty() 测试栈是否为空。不需要参数，并返回布尔值。
* size() 返回栈中的 item 数量。不需要参数，并返回一个整数。

例如，s 是已经创建的空栈，Table1 展示了栈操作序列的结果。栈中，顶部项列在最右边。 ![3.4.栈的抽象数据类型.table1](https://808160078-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-Lvj7ZGdGdwnWS_ALAOL%2F-Lvj7ZuTzf-cIehB0Acm%2F-Lvj7hQI15TZ047VIb4A%2F3.4.%E6%A0%88%E7%9A%84%E6%8A%BD%E8%B1%A1%E6%95%B0%E6%8D%AE%E7%B1%BB%E5%9E%8B.table1.png?generation=1575970069088448\&alt=media)

*Table1*
