ํ๋ก๊ทธ๋จ์ ์ง๋ค๋ณด๋ฉด ๋ฐฐ์ด์ ์ฌ์ฉํ ๋๊ฐ ๋ง์์ง๋ค.
๋ฐฐ์ด์ ํฌ๊ธฐ๊ฐ ํ์ ๋์ด ์๊ธฐ ๋๋ฌธ์ ๊ณต๊ฐ์ด ๋ชจ์๋ผ๋ ๊ฒฝ์ฐ๊ฐ ์ข ์ข ์๊ธธ ์ ์๋๋ฐ, 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๋ ๋๋ธ ๋งํฌ๋ ๋ฆฌ์คํธ๋ก ๊ตฌ์ฑ๋์ด์๋ค๊ณ ํ๋ค.
'์๊ณ ๋ฆฌ์ฆ > ์๋ฃ๊ตฌ์กฐ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
3. ํ (0) | 2023.09.12 |
---|---|
2. ์คํ (0) | 2023.09.07 |