์ฃผ๋์ด ๊ฐ๋ฐ์์ ๊ฐ์ธ ๊ณต๋ถ ๊ณผ์ ์ ๊ธฐ๋กํฉ๋๋ค.
์๋ฃ๊ตฌ์กฐ(data structure)
์๋ฃ๊ตฌ์กฐ: ๋๋ ๋ฐ์ดํฐ์ ํจ์จ์ ์ธ ์ ์ง ๊ด๋ฆฌ ๋ฐฉ๋ฒ
๋ค์ํ ์ข ๋ฅ์ ์๋ฃ๊ตฌ์กฐ๋ค
์๊ณ ๋ฆฌ์ฆ ์์ฑ์ ์ฌ์ฉ๋๋ ์๋ฃ๊ตฌ์กฐ์๋ ๋ค์ํ ์ข ๋ฅ๊ฐ ์์ง๋ง ๊ทธ ์ค ๋ํ์ ์ธ 5๊ฐ๋ฅผ ์์๋ณด์.
1. ๋ฐฐ์ด
๋ฐ์ดํฐ๋ฅผ ๋นํ์์ด ๋์ดํ ์๋ฃ๊ตฌ์กฐ.
- ๋ฐ์ดํฐ์ ์์๊ฐ ๊ณ ์ ๋์ด ์๋ค
- ๋ฐฐ์ด์ ์ข
๋ฅ
- 1์ฐจ์ ๋ฐฐ์ด: ์ผ์ง์ ์์ ๋ฐ์ดํฐ๋ฅผ ๋์ด
- 2์ฐจ์ ๋ฐฐ์ด: ์ฌ๊ฐํ์ฒ๋ผ ๊ฐ๋ก์ธ๋ก ๋นํ์์ด ๋ฐ์ดํฐ๋ฅผ ๋์ด
- 3์ฐจ์ ๋ฐฐ์ด: ์ง์ก๋ฉด์ฒด์ฒ๋ผ ๊ฐ๋ก, ์ธ๋ก, ๋์ด์ ๋ฐ์ดํฐ๋ฅผ ๋์ด
2. ๋ฆฌ์คํธ(linked list)
๋ฐ์ดํฐ๋ฅผ ์์๋๋ก ๋์ดํ ์๋ฃ๊ตฌ์กฐ.
- ๋ฐฐ์ด๊ณผ ๊ฐ์ด ์ฐจ๋ก๋๋ก ๋์ดํ ๋ฐ์ดํฐ๋ฅผ ๊ด๋ฆฌํ๋ค.
- ๊ทธ๋ฌ๋ ๋ฐ์ดํฐ๋ค์ด ํ์ดํ๋ก ์๋ก ์ฐ๊ฒฐ๋์ด ์์ด ๋ฐ์ดํฐ๋ค์ด ๋จ์ด์ง ์ฅ์์ ์์นํด๋ ๋๋ค๋ ์ ์ด ๋ฐฐ์ด๊ณผ๋ ๋ค๋ฅด๋ค.
- ๋ฆฌ์คํธ์ ์ข
๋ฅ
- ๋จ๋ฐฉํฅ ๋ฆฌ์คํธ: ์์ชฝ์์ ๋ค์ชฝ์ ๊ฐ๋ฆฌํค๋ ๋ฐฉํฅ์ฑ์ ๊ฐ์ง ๋์ผ๋ก ์์๊ฐ ์๋ ๋ฐ์ดํฐ๋ฅผ ์ฐ๊ฒฐํ๋ ๋ฐฉ์. ๋จ๋ฐฉํฅ ๋ฆฌ์คํธ์ ๊ฐ ์์๋ 2๊ฐ์ง ํญ๋ชฉ์ ๊ฐ์ง๊ณ ์๋ค.
- ๋ฐ์ดํฐ
- ๋ค์ ์์๋ฅผ ๊ฐ๋ฆฌํค๋ ํฌ์ธํฐ: ์์์ ์์๋ฅผ ์ฐ๊ฒฐํ๋ ๋์ ์ญํ . ์์น ์ ๋ณด๊ฐ ์ ์ฅ๋์ด ์๋ค ์ฆ, ๋จ๋ฐฉํฅ ๋ฆฌ์คํธ๋ HEAD ํฌ์ธํฐ(์ฒซ ๋ฒ์งธ ์์๋ฅผ ๊ฐ๋ฆฌํค๋ ํฌ์ธํฐ)๊ฐ ๊ฐ๋ฆฌํค๋ ์์์์ ์์ํ๊ณ NEXT ํฌ์ธํฐ๊ฐ ์ข ๋ฃ ์ ๋ณด๋ฅผ ์ ์ฅํ ์์(TAIL ํฌ์ธํฐ: ๋ง์ง๋ง ์์๋ฅผ ๊ฐ๋ฆฌํค๋ ํฌ์ธํฐ)์์ ๋๋๋ค.
- ์๋ฐฉํฅ ๋ฆฌ์คํธ: ์์์๋ถํฐ ๋ค๋ฅผ ๊ฐ๋ฆฌํค๋ ๋๊ณผ ๋ค์์ ์์ ๊ฐ๋ฆฌํค๋ ๋ 2๊ฐ๋ฅผ ์ฌ์ฉํ์ฌ ์์๊ฐ ์๋ ๋ฐ์ดํฐ๋ค์ ์ฐ๊ฒฐํ๋ ๋ฐฉ๋ฒ. ์๋ฐฉํฅ ๋ฆฌ์คํธ์ ๊ฐ ์์๋ 3๊ฐ์ง ํญ๋ชฉ์ ๊ฐ์ง๊ณ ์๋ค
- ๋ฐ์ดํฐ
- NEXT ํฌ์ธํฐ: ๋ค์ ์์๋ฅผ ๊ฐ๋ฆฌํค๋ ํฌ์ธํฐ
- PREV ํฌ์ธํฐ: ์ด์ ์์๋ฅผ ๊ฐ๋ฆฌํค๋ ํฌ์ธํฐ
- ๋จ๋ฐฉํฅ ๋ฆฌ์คํธ: ์์ชฝ์์ ๋ค์ชฝ์ ๊ฐ๋ฆฌํค๋ ๋ฐฉํฅ์ฑ์ ๊ฐ์ง ๋์ผ๋ก ์์๊ฐ ์๋ ๋ฐ์ดํฐ๋ฅผ ์ฐ๊ฒฐํ๋ ๋ฐฉ์. ๋จ๋ฐฉํฅ ๋ฆฌ์คํธ์ ๊ฐ ์์๋ 2๊ฐ์ง ํญ๋ชฉ์ ๊ฐ์ง๊ณ ์๋ค.
์ด๋ฏธ์ง: [์๋ฃ๊ตฌ์กฐ] C - ๋งํฌ๋๋ฆฌ์คํธ, LInkedList
N๋ฒ์งธ ์์์ ์ฐธ์กฐ๊ฐ ๋น ๋ฅธ ๊ฒ์ ๋ฐฐ์ด, ๋๋ฆฐ ๊ฒ์ ๋ฆฌ์คํธ ๊ตฌ์กฐ.
๋ฐ์ดํฐ์ ์ฝ์ ์ญ์ ๊ฐ ๋น ๋ฅธ ๊ฒ์ ๋ฆฌ์คํธ ๊ตฌ์กฐ, ๋๋ฆฐ ๊ฒ์ ๋ฐฐ์ด
3. ์คํ(stack)
์ฑ ์ ์์ ์ฑ ์ ์๋ฏ ๋ฐ์ดํฐ๋ฅผ ๊ด๋ฆฌํ๋ ์๋ฃ๊ตฌ์กฐ
- FILO(First In Last Out), LIFO(Last In First Out)
- ๋ฐ์ดํฐ๋ฅผ ๋ฃ๋(์๋) ์์ ์ ํธ์(PUSH)
- ๋ฐ์ดํฐ๋ฅผ ๊บผ๋ด๋ ์์ ์ ํ(POP)
4. ํ(queue)
๋๊ธฐ ํ๋ ฌ. ๋ฐ์ดํฐ๋ฅผ ๋ฃ์ ์์๋๋ก ๋ฐ์ดํฐ๋ฅผ ๊บผ๋ด๋ ๋ฐ์ดํฐ ๊ด๋ฆฌ ๋ฐฉ๋ฒ
- FIFO(First In First Out), LILO(Last In Last Out)
- ํ์์๋ ์ค๊ฐ์ ๋ผ์ด๋ค๊ฑฐ๋
- ์์๋ฅผ ์ด๊ธฐ๊ณ ์์น๊ธฐ ํ๋ ํ๋์ ํ์ฉ๋์ง ์๋๋ค.
5. ํธ๋ฆฌ(๋๋ฌด ๊ตฌ์กฐ)
๋๋ฌด๊ฐ์ง๊ฐ 2๊ฐ, 3๊ฐ, โฆ๋ก ๊ฐ๋ผ์ง๊ณ , ๊ทธ ๊ฐ๋ผ์ง ๋์์ 2๊ฐ, 3๊ฐ, โฆ ๋๋๋ฏ ํด์ ธ ๋๊ฐ๋ ์๋ฃ๊ตฌ์กฐ.
์ด๋ฏธ์ง: ์๋ฃ๊ตฌ์กฐ-ํธ๋ฆฌ์ ๊ธฐ๋ณธ ๊ฐ๋ /์ฉ์ด
- ํธ๋ฆฌ์ ์ข
๋ฅ
- ์ด์ง ํธ๋ฆฌ(๋ฐ์ด๋๋ฆฌ ํธ๋ฆฌ): ๋ถ๋ชจ ํ๋์์ ์์ ๋์ด ๋ธ๋ฆฐ ๊ตฌ์กฐ
- ํ: ๋ถ๋ชจ ๋
ธ๋์ ๊ฐ์ด ์์ ๋
ธ๋์ ๊ฐ๋ณด๋ค ํญ์ ์ ์ ์ด์ง ํธ๋ฆฌ. ์ค์ ๋ก ํ์ ๊ตฌํํ ๋์๋ ์ผ๋ฐ์ ์ผ๋ก ๋ฐฐ์ด์ ์ฌ์ฉ. ๋ฐฐ์ด ์์ ๋ฒํธ๋ ํ์ โ๋ฟ๋ฆฌโ ์ฒซ ๋ฒ์งธ ์์๋ก,
- โ๊น์ดโ๋ ์์ ์ชฝ์์ ํฐ ์ชฝ์ผ๋ก
- ๋ ธ๋์ ์ผ์ชฝ์์ ์ค๋ฅธ์ชฝ ๋ฐฉํฅ์ผ๋ก ๋์ ํ๋ค.
โจ tl;dr
โ๏ธ ์๋ฃ๊ตฌ์กฐ๋?
- ๋๋์ ๋ฐ์ดํฐ๋ฅผ ์ ๋ ฅํ๊ณ ์ฒ๋ฆฌํ ํ, ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ์ถ๋ ฅํ๋ ์๊ณ ๋ฆฌ์ฆ์๋ ๋๋ ๋ฐ์ดํฐ์ ์ ์ถ๋ ฅ ๋ฐ ์ฒ๋ฆฌ์ ๋ณด๋ค ํจ์จ์ ์ธ ๋๋ ๋ฐ์ดํฐ์ ์ ์ง ๊ด๋ฆฌ ๋ฐฉ๋ฒ์ด ํ์ํ๋ค.
- ์๋ฃ ๊ตฌ์กฐ์ ์ข
๋ฅ๋ ์ฌ๋ฌ๊ฐ์ง๊ฐ ์์ง๋ง ๊ทธ ์ค ๋ํ์ ์ผ๋ก
๋ฐฐ์ด
,๋ฆฌ์คํธ
,์คํ
,ํ
,ํธ๋ฆฌ
๊ฐ ์๋ค