ํ๋ก๊ทธ๋จ์ ์ง๋ค๋ณด๋ฉด ๋ฐฐ์ด์ ์ฌ์ฉํ ๋๊ฐ ๋ง์์ง๋ค.
๋ฐฐ์ด์ ํฌ๊ธฐ๊ฐ ํ์ ๋์ด ์๊ธฐ ๋๋ฌธ์ ๊ณต๊ฐ์ด ๋ชจ์๋ผ๋ ๊ฒฝ์ฐ๊ฐ ์ข
์ข
์๊ธธ ์ ์๋๋ฐ, C++์ ์ฌ์ฉํ๋ ์ฌ๋๋ค์ STL์ vector๋ฅผ ๋ณดํต ๋ ์ฌ๋ฆฐ๋ค. ๋์ ๊ฒฝ์ฐ๋ ๊ทธ๋ฌ๊ณ
ํ์ง๋ง STL์ vector ๊ฒฝ์ฐ ํฌ๊ธฐ์ ์๊ด์์ด ์์ ์์ฌ๋ก ๋์ด๋๋ ๊ฒ์ฒ๋ผ ๋ณด์ด์ง๋ง ๋ฐฐ์ด ํํ์์ ๋ฐฐ์ด์ด ๊ฐ๋ ์ฐฐ ๋๋ง๋ค ํฌ๊ธฐ๋ฅผ 1.5๋ฐฐ ~ 2๋ฐฐ (์ปดํ์ผ๋ฌ์ ๋ฐ๋ผ ๋ค๋ฆ) ๋๋ฆฐ ํ ๋ค์ ์ฎ๊ฒจ๋ด๋ ํ์์ด๋ผ๊ณ ํ๋ค.
๋ฐ๋ผ์ ๋งํฌ๋ ๋ฆฌ์คํธ๋์ ๋ค๋ฅธ ๊ฐ๋
์ด๋ค.
๋งํฌ๋ ๋ฆฌ์คํธ๋ C์์ ๋ฐฐ์ด์ ํฌ๊ธฐ๊ฐ ํ์ ๋์ด ์๋ ํ๊ณ๋ฅผ ๊ทน๋ณตํ๊ณ ์ ๋ง๋ ๊ฐ๋
์ด๋ค.
ํ์ง๋ง ์ฌ๋ฌ๊ฐ์ง ์ฅ๋จ์ ์ด ์๊ธฐ์ ์๊ฐํ๋ ค๊ณ ํ๋ค.
๐น01. ๋งํฌ๋ ๋ฆฌ์คํธ
์ ์ฐํ๊ฒ ํฌ๊ธฐ๋ฅผ ๋ฐ๊ฟ ์ ์๋ ๊ตฌ์กฐ๋ฅผ ๋ณด๊ณ '๋ฆฌ์คํธ(list)'๋ผ๊ณ ํ๋๋ฐ, ๋งํฌ๋ ๋ฆฌ์คํธ๋ ์ด ์ค์์ ๊ฐ์ฅ ๊ฐ๋จํ ๊ตฌํํ๋ ๋ฐฉ๋ฒ์ด๋ค.
'๋ฆฌ์คํธ' ๋ด์ ๊ฐ ์์๋ '๋
ธ๋(Node)' ๋ผ๊ณ ๋ถ๋ฅธ๋ค.
'๋งํฌ๋'๋ '์ฐ๊ฒฐ๋' ์ด๋ผ๋ ๋ป์ด๋ค. ์ฆ ๋งํฌ๋ ๋ฆฌ์คํธ๋ ์ฐ๊ฒฐ๋ ๋ฆฌ์คํธ์ด๋ค.
๊ตฌ์กฐ
๋
ธ๋์ ๊ตฌ์กฐ
๋
ธ๋๋ ๋ฐ์ดํฐ์ ํฌ์ธํฐ๋ฅผ ๊ฐ์ง ๊ตฌ์กฐ์
๋๋ค.
ํฌ์ธํฐ๋ ๋ค์์ฌ ๋
ธ๋๋ฅผ ๊ฐ๋ฅดํด์ผ๋ก์จ ํด๋น ํฌ์ธํฐ๋ฅผ ์ด์ฉํด ๋ค์ ๋
ธ๋๋ฅผ ํ์ํ ์ ์๋ค.
๋งํฌ๋ ๋ฆฌ์คํธ ๊ตฌ์กฐ
์ฒซ ๋ฒ์งธ ๋
ธ๋๋ฅผ ํค๋, ๋ง์ง๋ง ๋
ธ๋๋ฅผ ํ
์ผ์ด๋ผ๊ณ ๋ถ๋ฅธ๋ค.
๋ง์น KTX ๊ธฐ์ฐจ๋ฅผ ์ด์ด๋ถ์ด๋ ๊ฒ ์ฒ๋ผ ๋ค๋ฅผ ์ด์ด์ ๋ถ์ธ๋ค.
๊ธฐ์ฐจ ์ฌ์ด์ ์ด์์ ์ญํ์ ํ๋ ๊ณ ๋ฆฌ๊ฐ ๋
ธ๋์ ํฌ์ธํฐ๊ฐ ํ๋ ์ญํ ์ด๋ค.
struct Node
{
Data data; //๋ฐ์ดํฐ
struct Node* NextNode; //๋ค์ ๋
ธ๋๋ฅผ ๊ฐ๋ฆฌํค๋ ํฌ์ธํฐ
}
๋งํฌ๋ ๋ฆฌ์คํธ๋ฅผ ์ค์ ํ๊ธฐ ์ํด์๋ ์ฝ๋๋ธ๋ก์ด ์ข
๋ฃ๋จ์ ๋ฐ๋ผ ์ฌ๋ผ์ง์ง ์๋๋ก malloc() ํจ์๋ฅผ ํตํด ํ ๋น์ ํด์ค๋ค.
์ด๋ฌํ ๋งํฌ๋ ๋ฆฌ์คํธ๋ ํ์ ์ฐ์ฐ์์ ์ฝ์ ์ ๊ฐ์ง๊ณ ์๋ค.
์์์๋ถํฐ ์ญ์ฑ ์ฐ๊ฒฐ๋ ๊ตฌ์กฐ์ด๋ค ๋ณด๋ HEAD๋ถํฐ ํ์์ ์์ํด์ ๋ง์ฝ 10๊ฐ์ ๋
ธ๋ ์ค 10๋ฒ์งธ ๋
ธ๋๋ฅผ ์ฐพ์ผ๋ ค๊ณ ํ๋ค๋ฉด 1๋ฒ๋ถํฐ ํ์ํด์ 10๋ฒ๊น์ง ๋ค๋ฌ์์ผํ๋ค.
๋ฐ๋ผ์ n๊ฐ์ ๋
ธ๋ ์ค n๋ฒ์งธ ๋
ธ๋๋ฅผ ์ฐพ์ผ๋ ค๊ณ ํ๋ค๋ฉด n๋ฒ ํ์์ ์งํํด์ผํ๊ธฐ์ ๋น์ฉ์ด ํฌ๊ณ ์๋๊ฐ ๋๋ฆฌ๋ค.
โ๋ฐฐ์ด์ ๋นํด ๋งํฌ๋ ๋ฆฌ์คํธ์ ์ฅ๋จ์ ์ ๋ฆฌโ
๐ธ๋จ์ ๐ธ
1. ํฌ์ธํฐ ๋๋ฌธ์ ๊ฐ ๋
ธ๋๋ง๋ค 4 byte์ ๋ฉ๋ชจ๋ฆฌ๊ฐ ์ถ๊ฐ๋ก ํ์ํจ
2. ์ต์ฝ์ ๊ฒฝ์ฐ nํ์ ๋
ธ๋ ํ์ ๋ฃจํ -> ๋น์ฉ์ด ํฌ๊ณ ์๋๊ฐ ๋๋ฆผ
๐ธ์ฅ์ ๐ธ
1. ์๋ก์ด ๋
ธ๋์ ์ถ๊ฐ,์ฝ์
,์ญ์ ๊ฐ ์ฝ๊ณ ๋น ๋ฆ
๋ฐ๋ผ์, ๋งํฌ๋ ๋ฆฌ์คํธ๋ ์ถ๊ฐ,์ฝ์
,์ญ์ ๊ฐ ์ฆ๊ณ ์กฐํ๋ ๋๋ฌธ ๊ณณ์ ์ ์ฉํ๋ค.
๐น02. ๋๋ธ ๋งํฌ๋ ๋ฆฌ์คํธ
๋๋ธ ๋งํฌ๋ ๋ฆฌ์คํธ๋ ๋งํฌ๋ ๋ฆฌ์คํธ์ ํ์ ๊ธฐ๋ฅ์ ๊ฐ์ ํ ์๋ฃ๊ตฌ์กฐ์ด๋ค.
์ด์ ๋
ธ๋๋ฅผ ์ฐธ์กฐํ๋ ํฌ์ธํฐ๋ฅผ ํ๋ ๋ Node ์์ ๋ง๋ค์ด์ ์๋ฐฉํฅ ํ์์ด ๊ฐ๋ฅํ๋๋ก ๋ง๋ค์๋ค.
๐น03. ํํ ๋งํฌ๋ ๋ฆฌ์คํธ
ํํ ๋งํฌ๋ ๋ฆฌ์คํธ๋ ํค๋์ ํ
์ผ์ ์ฐ๊ฒฐํ ๋งํฌ๋ ๋ฆฌ์คํธ์ด๋ค.
์ด๋ฌํ ๋ฐฉ๋ฒ์ ์ฌ์ฉํ๋ฉด ํ
์ผ์ ์ ๊ทผํ๋ ๋น์ฉ์ด ์์์ ธ์, ๋ค์์๋ถํฐ ๋
ธ๋๋ฅผ ์ฐพ์ ๋๊ฐ๋ ํ์์ ๊ตฌํํ ์ ์๋ค.
์๋ฅผ๋ค์ด 10๊ฐ์ ๋
ธ๋ ์ค 8๋ฒ์งธ๋ฅผ ์ฐพ๊ณ ์ถ๋ค๋ฉด HEAD์์ TAIL๋ก 2๋ฒ ํ์ํ๋ฉด ๋ ๋น ๋ฅด๊ฒ ์ฐพ์ ์ ์๋ค.
๐
์์๋๋ฉด ์ข์ TIP๐
์ ์ฐํ๊ฒ ํฌ๊ธฐ๋ฅผ ๋ฐ๊ฟ ์ ์๋ ๊ตฌ์กฐ๋ฅผ ๋ณด๊ณ '๋ฆฌ์คํธ(list)'๋ผ๊ณ ํ๋๋ฐ,
C++ STL vector๋ ๋ฆฌ์คํธ์ ์ผ์ข
์ด๋ผ๊ณ ๋ณผ ์ ์๊ฒ ๋ค.
์ฌ๊ธฐ์ C++ STL vector ๋ ๋์ ๋ฐฐ์ด์ ํํ์ด๊ณ ,
C++ STL list๋ ๋๋ธ ๋งํฌ๋ ๋ฆฌ์คํธ๋ก ๊ตฌ์ฑ๋์ด์๋ค๊ณ ํ๋ค.