mirror of
https://github.com/prdlk/leetcode.git
synced 2026-11-02 13:12:44 +00:00
63 lines
1.6 KiB
Plaintext
63 lines
1.6 KiB
Plaintext
---
|
|
title: Stack
|
|
description: 'Items are added and removed from one end, so the last item added is the first item removed.'
|
|
hidden: true
|
|
---
|
|
|
|
A stack works like a stack of plates in a cafeteria. You add new plates on top. When you need a plate, you take from the top. The last plate you added is the first one you remove.
|
|
|
|
This is **Last-In-First-Out (LIFO)**. The most recent item goes out first.
|
|
|
|

|
|
|
|
## Core Stack Operations
|
|
|
|
A stack has two fundamental operations:
|
|
|
|
- **Push**: add an item to the top of the stack
|
|
- **Pop**: remove the item at the top of the stack
|
|
|
|
Some stacks have additional operations:
|
|
|
|
- **Peek**: get the item at the top of the stack without removing it
|
|
- **IsEmpty**: check if the stack is empty
|
|
|
|

|
|
|
|
```python
|
|
# Using Python list as a stack
|
|
stack = []
|
|
|
|
# Push elements
|
|
stack.append(10)
|
|
stack.append(20)
|
|
stack.append(30)
|
|
# Stack: [10, 20, 30] (30 is on top)
|
|
|
|
# Pop element
|
|
top = stack.pop() # Returns 30
|
|
# Stack: [10, 20]
|
|
|
|
# Peek at top
|
|
if stack:
|
|
top_element = stack[-1] # Returns 20 without removing
|
|
```
|
|
|
|
Python lists provide `append()` for pushing and `pop()` for popping. The `peek()` method is not built-in, but you can implement it yourself.
|
|
|
|
## Last in, First out
|
|
|
|
The defining characteristic of a stack is LIFO order. Whatever you put in last comes out first. This is different from a queue, which is First-In-First-Out (FIFO).
|
|
|
|
Add items: A, B, C
|
|
|
|
- Stack: [A, B, C] (C on top)
|
|
|
|
Remove items:
|
|
|
|
- First pop: C
|
|
- Second pop: B
|
|
- Third pop: A
|
|
|
|
The order reverses. Items come out in the opposite order they went in.
|