2025. 3. 10. 15:42ใ[๐ปPython] pearl's python ๋ณ์๋ฆฌ ํ์ถ๊ธฐ ๐ฃ
์ฝ์ ๊ณผ ์ญ์ ๋ฅผ ๋ง์ด ํ๋๊ฒฝ์ฐ ํด๋น ์ฝ๋๋ ๋นํจ์จ์ ์ด๊ฒ ๋๋ค.
์ด๋ฌํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ์ฐ๊ฒฐ ๋ฆฌ์คํธ๋ผ๋ ์๋ก์ด ์๋ฃ๊ตฌ์กฐ๊ฐ ๋ฑ์ฅํ๊ฒ ๋๋ค !
์ฐ๊ฒฐ๋ฆฌ์คํธ
-ํ์์ ๋๋ฆฌ๋ค. O(N)
-์ฝ์ ๊ณผ ์ญ์ ์ฐ์ฐ์ ๋งค์ฐ ๋น ๋ฅด๋ค O(1)
-์ฝ์ ๊ณผ ์ญ์ ๊ฐ ์ฆ์ ์ํฉ์์ ์์ฃผ ์ฌ์ฉ๋๋ค.
- ์ฌ๋ฌ๊ฐ์ ๋ ธ๋๊ฐ ๋ชจ์ฌ์ ํ์ฑ๋๋ ๊ตฌ์กฐ
๋ ธ๋๋
- ์ฐ๊ฒฐ๋ฆฌ์คํธ๋ฅผ ์๊ธฐ์ํด ์ดํดํด์ผ ํ๋ ๊ฐ๋
- ์ ๋ณด๋ฅผ ๋ด๋ ํ๋์ ์ฐฝ๊ตฌ๋ผ๊ณ ์๊ฐํ๋ฉด ๋๋ค.
- ์ผ๋ฐ์ ์ผ๋ก ์ฐ๊ฒฐ๋ฆฌ์คํธ์์ ํ๋์ ๋ ธ๋๋ ๋ฐ์ดํฐ์ ๋ค๋ฅธ ๋ ธ๋๋ก ์ด๋ํ๋ ๊ฒฝ๋ก๋ฅผ ๊ฐ๊ณ ์์.
๋จ์ผ์ฐ๊ฒฐ๋ฆฌ์คํธ
- ๋จ์ผ = ์ฐ๊ฒฐ๋ฐฉํฅ์ด ๋จ๋ฐฉํฅ = ์ผ๋ฐฉํตํ ๊ตฌ์กฐ
- ๋ฐ๋ก ์ ๋ ธ๋๋ฅผ ์ฐธ์กฐํ ์ ์์.
- ๊ฐ ๋ ธ๋๋ณ๋ก data์ next๊ฐ์ ๊ฐ์ง๊ณ ์๋๋ฐ data ๋ ๊ฐ์ next๋ ๋ค์ ๋ ธ๋์ ์์น๋ฅผ ๊ฐ๋ฅดํค๋ ์ญํ
- ์๋ฅผ ๋ค์ด ๊ฐ์ด 4์ธ ๋ ธ๋๊ฐ ์๋ค๋ฉด ๋ค์ ๋ ธ๋๊ฐ ์๊ธฐ ๋๋ฌธ์ next์๋ ๊ธฐ๋ณธ์ ์ผ๋ก null์ด ๋ค์ด์๋ค.
- ์๋ ์ฝ๋๋ฅผ ์ด์ฉํ์ฌ node1๊ณผ node2๋ฅผ ๋ง๋ค๊ณ ์ด๋ฅผ ์ฐ๊ฒฐํด๋ณด์.
#node1์ ๋ง๋ ๋ค.
set node1 = node(3)
#node2๋ฅผ ๋ง๋ ๋ค.
set node2 = node(5)
# node1๊ณผ node2๋ฅผ ์ฐ๊ฒฐํ๋ค.
node1.next=node2
#node1.next๋ node2 ์์ฒด๋ฅผ ์๋ฏธํ๋ค.
print(node2.data) # 5
print(node2.next.data) # 5
- node1๊ณผ node2๋ฅผ ๋ถ๋ฆฌํด๋ณด์.
node1.next = null # ๋ ๊ด๊ณ๋ฅผ ๋๋๋ค.
- next ๊ฐ์ null์ ๋ฃ๋ ๊ฒ์ ๋ค์์ ๋ ธ๋๋ฅผ ์ญ์ ํ ๋ ์ด์ฉํ๊ฒ ๋๋ค.
๋จ์ผ์ฐ๊ฒฐ๋ฆฌ์คํธ์ ๋ฌธ์ ์ : ์์์ ์ ์ฐพ์ ์ ์์.
-์์์ ์ ์์ง ๋ชปํ๋ค๋ฉด ์ฐ๋ฆฌ๊ฐ ๋ชจ๋ ๊ฐ์ ํ์ํ๋์ง ํ๋จํ ์ ์์.
- ๊ทธ๋์ ๋ฆฌ์คํธ์ ์ฒซ๋ฒ์งธ ๊ฐ์ ์์น๋ฅผ ๋ฐ๋์ ๋ช ์ํด์ผ ํจ. -> ์ด๋ฅผ head๋ผ๊ณ ๋ถ๋ฆ.
- ์ข ๋ฃ๋๋ ์์ ๋ ๋ช ์ -> tail์ด๋ผ๊ณ ํจ.
- ๋จ์ผ์ฐ๊ฒฐ๋ฆฌ์คํธ๋ ์ฝ์ ์ญ์ ํ์์ด ๋ชจ๋ ๊ฐ๋ฅํ ์๋ฃ๊ตฌ์กฐ
-ํ์์ ๊ฒฝ์ฐ , head๋ถํฐ tail์ ์ผ์ผํ ํ์ธํด์ผ ํ๋ฏ๋ก
๋จ์ผ์ฐ๊ฒฐ๋ฆฌ์คํธ - ์ฝ์ & ์ญ์ & ํ์
<์ฝ์ >
- tail ์ next๊ฐ ๋น์ด์๊ธฐ ๋๋ฌธ์ ์๋ก์ด ๋ ธ๋๊ฐ ๋ค์ด์ค๊ฒ ๋๋ฉด next๊ฐ ๊ฐ๋ฆฌํค๋ ๋ ธ๋๋ฅผ ํด๋น ๋ ธ๋๋ก ์ง์ ํด์ฃผ๋ฉด๋๋ค.
- ๊ทธ๋ฌ๋ ์๋ก์ด ๋ ธ๋๋ tail๋ณด๋ค ๋ค์ ์์น -> ์ถ๊ฐ์ ์ผ๋ก tail์ด ๊ฐ๋ฆฌํค๋ ๋ ธ๋๋ฅผ ๋ณ๊ฒฝํด์ค์ผ ํจ.# tail ๋ค์ ์ฝ์ ํ๋ ์ฝ๋ function SLL.insert_end(num) set new_node = node(num) # 1. ๋ ธ๋ ๋ง๋ค๊ธฐ SLL.tail.next = new_node # 2. ์ด์ด ๋ถ์ด๊ธฐ SLL.tail = new_node # 3. Tail ๋ณ๊ฒฝํ๊ธฐโ
# head์์ ์ฝ์ ํ๋ ์ฝ๋ function SLL.insert_front(num) set new_node = node(num) # 1. ๋ ธ๋ ๋ง๋ค๊ธฐ new_node.next = SLL.head # 2. ์ด์ด ๋ถ์ด๊ธฐ SLL.head = new_node # 3. head ๋ณ๊ฒฝํ๊ธฐ
# head๋ฐ๋ก ๋ค์ ๋ ธ๋๋ฅผ ์ฝ์ ํ๋ ๊ฒฝ์ฐ function SLL.insert_after_head(num) set new_node = node(num) # 1. ๋ ธ๋ ๋ง๋ค๊ธฐ new_node.next = SLL.head.next # 2. ์๋ก์ด ๋ ธ๋์ next ๊ฐ ๋ณ๊ฒฝ SLL.head.next = new_node # 3. head์ next๊ฐ ๋ณ๊ฒฝ
<์ญ์ >
- ์ฐ๊ฒฐ์ ์ ๊ฑฐ
- ์ญ์ ๋๋ ๋ ธ๋์ ๋ฐ๋ก ์ ๋ ธ๋์์ ๊ทธ ๋ค์ ๋ ธ๋๋ก ์ฐ๊ฒฐ๊ด๊ณ๋ฅผ ๋ณ๊ฒฝํด์ค์ผ ํจ.
- tail ์ญ์ ์, tail ๋ฐ๋ก ์ ๋ ธ๋์ next ๊ฐ์ ๋จผ์ null๋ก ๋ณ๊ฒฝํ ๋ค tail์ ๊ทธ ์ ์ผ๋ก ์ฎ๊ฒจ์ฃผ๋ ์์ ์ ํจ.
- head ์ญ์ ์, head์ ๊ฐ์ head.next๋ก ์ง์ ํ๊ธฐ๋ง ํ๋ฉด ๋จ.
<ํ์>
- ๋จ์ผ ์ฐ๊ฒฐ๋ฆฌ์คํธ๋ ์์๊ณผ ๋์ด ๋ช ํํด์ผ ์์์ ๋ถํฐ ๋์ ๊น์ง next๋ฅผ ๋ฐ๋ผ๊ฐ๋ฉฐ ํ์์ ์งํํ ์ ์์.
'[๐ปPython] pearl's python ๋ณ์๋ฆฌ ํ์ถ๊ธฐ ๐ฃ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Python] A ๊ฐ์กฐํ๊ธฐ (0) | 2025.03.11 |
---|---|
[Python] A ๊ฐ์กฐํ๊ธฐ (0) | 2025.03.10 |
[python]๊ณต๋ฐฑ์ผ๋ก ๊ตฌ๋ถํ๊ธฐ1 (0) | 2025.03.07 |
[์๋ฃ๊ตฌ์กฐ]ch2 - lesson 2. ๋์ ๋ฐฐ์ด์ ์ดํด, ์ ์ ๋ช ๋ น ์ฒ๋ฆฌ (0) | 2025.03.06 |
[์๋ฃ๊ตฌ์กฐ]ch2 - lesson 1. ๋ฐฐ์ด์ ์ฐ์ฐ, ๋ฐฐ์ด์ ์ดํด (0) | 2025.03.06 |