์๋ฃ๊ตฌ์กฐ - ์์ฐจ ์๋ฃ๊ตฌ์กฐ ( ์ ํ ๋ฆฌ์คํธ ) & ์ฐ๊ฒฐ ์๋ฃ๊ตฌ์กฐ
- -
* ๋ฆฌ์คํธ(List) ๋ ?
์๋ฃ๋ฅผ ๋์ดํ ๋ชฉ๋ก์ ๋งํ๋ค. (์ผ๋ฐ์ ์ผ๋ก ์๋์ ๊ฐ์ ํ์ ํํ)
์ด๋ฆ | ์ฃผ์ | ์ถ์๋ฒํธ | ์ด๋ฉ์ผ |
kim | seoul | 99 | abc@naver.com |
you | tokyo | 77 | test@naver,com |
lee | busan | 33 | as@daum.net |
*์ ํ ๋ฆฌ์คํธ(Linear List)๋ ?
์ด๋ฌํ ํํ์ ๋ฆฌ์คํธ๋ฅผ, ์ปดํจํฐ์์๋ ์ ํ ๋ฆฌ์คํธ(Linear List)๋ก ํํํ๋ค. ์ ํ ๋ฆฌ์คํธ์ ํต์ฌ์ ์ ์ฒ๋ผ ์ฐ๊ฒฐ๋ ๋ฆฌ์คํธ์ด๊ธฐ ๋๋ฌธ์ "์์"๊ฐ ์ค์ํ๋ค.
EX ) ์ค๊ตญ์ง = (์ง์ฅ๋ฉด ,ํ์์ก , ๊ฟ๋ฐ๋ก์ฐ ........ )
๋ฆฌ์คํธ๊ฐ ๊ณต๋ฐฑ์ผ ๊ฒฝ์ฐ๋ ํ์ฉ๋๋ค. ๊ทธ๋๋ ๋น ๊ดํธ์ธ () ๋ก ํํํ๋ฉด ๋๋ค.
์ด๋ฌํ ์๋ฃํ์ธ ๋ฆฌ์คํธ๋ ์์๊ฐ ์ค์ํ๋ค. ๋ฐ๋ผ์ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅ๋ ๋๋ ๊ฐ์ ์์๋ก ์ ์ฅ๋๋ค.
(๋ฌผ๋ฆฌ์ ์์ = ๋ ผ๋ฆฌ์ ์์)
* ์ ํ ๋ฆฌ์คํธ - ์์์ ์์น
์์์ ์์น๋ ๋ค์๊ณผ ๊ฐ์ด ๊ณ์ฐํ ์ ์๋ค.
์ ์ฅ์ด ์์๋ ์์น๋ฅผ a, ์์์ ๊ธธ์ด๋ฅผ l ๋ผ๊ณ ํ์๋,
i ๋ฒ์งธ ์์์ ์์น = a + ( i - 1 ) * l , ์ฆ, ์ฒซ๋ฒ์งธ ์์๋ถํฐ ๊ณ์ฐํด๋ณด๋ฉด a , a +l , a + 2l .......... a+(i-1)*l์ด ๋๋ค.
*์ ํ ๋ฆฌ์คํธ - ์์์ ์ฝ์ / ์ญ์
์์๋ ๋ ผ๋ฆฌ์ ์์๋๋ก ์ ์ฅ๋์ด์๋ค. ์ด๋ฌํ ์์๋ค ์ฌ์ด์ ์๋ก์ด ์์๋ฅผ ์ฝ์ ํ๋ ค๋ฉด ์์๋ฅผ ์ฝ์ ํ ์๋ฆฌ๊ฐ ์์ด์ผํ๋ค. ๋ฐ๋ผ์, ์ฝ์ ํ ์์น ๋ค์ ์ ์ฅ๋ ์์๋ค์ ํ์๋ฆฌ์ฉ ์ด๋์์ผ์ผํ๋ค. ๊ทธ๋ฆฌ๊ณ ๊ณต๋ฐฑ์ด ์๊ธฐ๋ฉด, ๊ทธ ์๋ฆฌ์ ์๋ก์ด ์์๋ฅผ ์ฝ์ ํ๋ค.
์๋ก์ด ์์๋ฅผ ์ฝ์ ํ ๋์ ์๋ฆฌ์ด๋ ํ์ = n - k + 1 = ๋ง์ง๋ง ์์์ ์๋ฆฟ๊ฐ - ์ฝ์ ํ ์๋ฆฌ์ ์ธ๋ฑ์ค + 1
๋ฐ๋๋ก ์์์ ์ญ์ ์ ๊ฒฝ์ฐ๋ ๋ง์ฐฌ๊ฐ์ง๋ก ์๋ฆฌ์ด๋์ด ์์ด์ผ ํ๋ค. ์ค๊ฐ์ ๋น ๊ณต๋ฐฑ์ ๋ฉ๊พธ๊ธฐ ์ํด์ ๋ค์์๋ ์์๋ค์ ์ญ์ ๋ ์์์ชฝ์ผ๋ก ํ์นธ์ฉ ๋น๊ฒจ์ค์ผํ๋ค.
์์ ์ญ์ ์ ์๋ฆฌ์ด๋ ํ์ = n - k = ๋ง์ง๋ง ์ธ๋ฑ์ค - ์ญ์ ๋ ์ธ๋ฑ์ค
*2์ฐจ์ ๋ฐฐ์ด์ ๋ฌผ๋ฆฌ์ ์ ์ฅ ๋ฐฉ๋ฒ
*ํ ์ฐ์ ์์ ๋ฐฉ๋ฒ(row major order) - C ์ปดํ์ผ๋ฌ์ ๋ฐฉ์
ํ๋ฒํธ๋ฅผ ๊ธฐ์ค์ผ๋ก ์ ์ฅํ๋ ๋ฐฉ๋ฒ. (์ผ์ชฝ์์ ์ค๋ฅธ์ชฝ์ผ๋ก ์ฑ ์ฝ์๋์ ๊ฐ์ ์์๋๋ก)
์ด๋ฆ | ์ฃผ์ | ์ถ์๋ฒํธ | ์ด๋ฉ์ผ |
kim | seoul | 99 | abc@naver.com |
you | tokyo | 77 | test@naver,com |
์ฆ, ์ ํ์ 2์ฐจ์ ๋ฆฌ์คํธ๋ฅผ ํ ์ฐ์ ๋ฐฉ๋ฒ์ผ๋ก ๋์ดํด๋ณด๋ฉด
๋ฉ๋ชจ๋ฆฌ ์ ์ฅ ์์ => {kim, seoul , 99, abc@naver.com , you, tokyo, 77, test@naver.com}
3์ฐจ์ ๋ฆฌ์คํธ๋ถํฐ๋ ํ ์ฐ์ ์์ ๋ฐฉ๋ฒ์ด "๋ฉด ์ฐ์ ์์ ๋ฐฉ๋ฒ"์ผ๋ก ๋ช
์นญ์ด ๋ฐ๋๋ค. ์์๋ง ๋์
*์ด ์ฐ์ ์์ ๋ฐฉ๋ฒ(column major order)
์ด๋ฒํธ๋ฅผ ๊ธฐ์ค์ผ๋ก ์ ์ฅํ๋ ๋ฐฉ๋ฒ. (์์์ ์๋๋ก)
๋ฉ๋ชจ๋ฆฌ ์ ์ฅ ์์ => (kim , you , seoul, tokyo , 99,77 , abc@naver.com , test@naver.com)
*์ฐ๊ฒฐ ์๋ฃ๊ตฌ์กฐ (Linked Data Structure)
์์ฐจ ์๋ฃ๊ตฌ์กฐ๋ ๋ฌผ๋ฆฌ์ ์์ = ๋ ผ๋ฆฌ์ ์์ ์ด๊ธฐ ๋๋ฌธ์, ์ฝ์ ๋ฐ ์ญ์ ์์ ์์๋ค์ ์์น๋ฅผ ์ด๋์์ผ์ผ๋ง ํ๋ค. ์ด๋ ํ์ํ ์์ ์ด์ธ์ ์ถ๊ฐ์ ์ธ ์์ ๊ณผ ์๊ฐ์ด ์์๋๋ฏ๋ก ์์ฐจ ์๋ฃ๊ตฌ์กฐ์ ๋นํจ์จ์ฑ์ด๋ผ๊ณ ํ ์ ์๋ค.
์ฐ๊ฒฐ ์๋ฃ๊ตฌ์กฐ๋ ๋ฌผ๋ฆฌ์ ์์ != ๋ ผ๋ฆฌ์ ์์์ด๋ค. ๋ฐ๋ผ์ ๋ฌผ๋ฆฌ์ ์์๋ฅผ ๋ง์ถ๊ธฐ์ํด ์ค๋ฒํค๋(์ถ๊ฐ์ ์์ ๋ฐ ์๊ฐ์์)๊ฐ ๋ฐ์ํ์ง ์์ผ๋ฉฐ, ํฌ๊ธฐ ๋ณ๊ฒฝ์ด ์ ์ฐํ๊ณ ๋ ํจ์จ์ ์ธ ๋ฉ๋ชจ๋ฆฌ์ฌ์ฉ์ด ๊ฐ๋ฅํ๋ค.
*์ฐ๊ฒฐ ๋ฆฌ์คํธ์ ์ข ๋ฅ
- ๋จ์ ์ฐ๊ฒฐ ๋ฆฌ์คํธ
- ์ํ ์ฐ๊ฒฐ ๋ฆฌ์คํธ
- ์ด์ค ์ฐ๊ฒฐ ๋ฆฌ์คํธ
- ์ด์ค ์ํ ์ฐ๊ฒฐ ๋ฆฌ์คํธ
์ฐ๊ฒฐ๋ฆฌ์คํธ๋ <์์, ์ฃผ์>์ ๊ตฌ์กฐ๋ฅผ ๊ฐ๋๋ค.
์์๋ Data field๋ผ๊ณ ํ๋ฉฐ ์์์ ๊ฐ์ ์ ์ฅํ๋ค. ์ฃผ์๋ link field๋ผ๊ณ ํ๋ฉฐ ๋ค์ ๋ ธ๋์ ์ฃผ์๋ฅผ ์ ์ฅํ๋ค. (C์์๋ ํฌ์ธํฐ ๋ณ์๋ฅผ ์ฌ์ฉํ์ฌ ์ฃผ์๊ฐ์ ์ ์ฅ)
์์ผ์ ์์ฐจ ์ ํ ๋ฆฌ์คํธ์ ์ฐ๊ฒฐ ๋ฆฌ์คํธ๋ก ํํํ๋ฉด ์ฐจ์ด์ ์ ๋ณผ ์ ์๋ค.
*์์ฐจ ๋ฆฌ์คํธ
*์ฐ๊ฒฐ ๋ฆฌ์คํธ
์ฐ๊ฒฐ ๋ฆฌ์คํธ ์ด๋ฆ์ ํฌ์ธํฐ ๋ณ์ ๋ผ๊ณ ๋งํ๋ค. ํฌ์ธํฐ ๋ณ์๋ ๋ฆฌ์คํธ์ ์ฒซ๋ฒ์งธ ๋ ธ๋๋ฅผ ๊ฐ๋ฆฌํค๋ ๋์์, ์ฐ๊ฒฐ๋ ๋ฆฌ์คํธ ์ ์ฒด๋ฅผ ์๋ฏธํ๋ค. ๊ทธ๋ฆฌ๊ณ ๋ฆฌ์คํธ์ ๋ง์ง๋ง ๋ ธ๋์ link field์๋ ์ด ์์๊ฐ ๋์์ ์๋ฆฌ๊ธฐ ์ํด์ null์ ์ ์ฅํ๋ค. ๋ฐ๋ผ์ ๊ณต๋ฐฑ ์ฐ๊ฒฐ ๋ฆฌ์คํธ์๋ null์ด ๋ค์ด๊ฐ์๋ค.
* ๋จ์ ์ฐ๊ฒฐ๋ฆฌ์คํธ(singly linked list) ์ ์ฝ์ /์ญ์
*์ฝ์
week = { <์,200> <๊ธ,300> <์ผ,null> } "์"๊ณผ "๊ธ"์ฌ์ด์ "์"๋ฅผ ์ฝ์ ํ๋ ๊ฒฝ์ฐ๋ฅผ ์๋ก๋ค๋ฉด
1. ๊ณต๋ฐฑ๋ ธ๋๋ฅผ ํ๋ ๋ง๋ค๊ณ , ํฌ์ธํฐ๊ฐ ์ด ๋ ธ๋๋ฅผ ๊ฐ๋ฆฌํค๊ฒํ๋ค.
2. data field์ "์"๋ผ๋ ๊ฐ์ ์ ์ฅํ๋ค. (์์ ์์น๋ 150์ด๋ผ๊ณ ํด๋ณด์)
3. <์>์ link feild์ 200์ ๊ฐ๋ฆฌํค๋๋ก ์ ์ฅํ๋ค. 200์ "๊ธ"์ ์์น์ด๋ค. - <์,200>
4. ๋ค์์ผ๋ก๋ ์์ link feild๋ฅผ "์"๋ฅผ ๊ฐ๋ฅดํค๋๋ก ๋ฐ๊ฟ์ค๋ค.
week = { <์,150> <์,200> <๊ธ,300> <์ผ,null> } ์ด ๋๋ค.
*์ญ์
์ญ์ ์ ๊ฒฝ์ฐ์๋ ๋น์ทํ๋ค. ์์๋ฅผ ์ญ์ ํ๊ณ ์์๋ฅผ ๋ง์ถ๊ธฐ ์ํด ์ญ์ ํ ์์ ๋ฐ๋ก์ ๋ ธ๋์ link field๊ฐ์ ์กฐ์ ํ๊ฒ ๋๋ค.
*์ํ ์ฐ๊ฒฐ ๋ฆฌ์คํธ (circular linked list)
๋จ์ ์ฐ๊ฒฐ ๋ฆฌ์คํธ์์๋ ๋ง์ง๋ง ๋ ธ๋๊ฐ ๋์ ์๋ฆฌ๊ธฐ ์ํด null์ ๊ฐ๋ฆฌ์ผฐ๋ค. ์ํ ์ฐ๊ฒฐ ๋ฆฌ์คํธ์์๋ ๋ง์ง๋ง ๋ ธ๋๊ฐ ์ฒซ ๋ฒ์งธ ๋ ธ๋๋ฅผ ๊ฐ๋ฅดํค๊ธฐ ๋๋ฌธ์ ๊ณ์ ์์ ๋๋ฏ์ด ์ํํ๊ฒ ๋๋ค.
*๊ณต๋ฐฑ ๋ฆฌ์คํธ์ผ ๊ฒฝ์ฐ์๋ ์๊ธฐ์์ ์ด ์ฒ์์ด์ ๋์ด๋ฏ๋ก, ํฌ์ธํฐ(๋ฆฌ์คํธ์ด๋ฆ)์ ๋ ธ๋ A๋ฅผ ๊ฐ๋ฅดํค๊ณ , A๋ ์๊ธฐ ์์ ์ ๊ฐ๋ฅดํค๊ฒ ๊ตฌ์ฑ๋๋ค.
*์ํ ์ฐ๊ฒฐ ๋ฆฌ์คํธ์ ์ฝ์
๋ง์ง๋ง ๋ ธ๋ - ์ฒซ ๋ฒ์งธ ๋ ธ๋์ ์ฐ๊ฒฐ๋ถ์๋ง ์ ์ธํ๋ฉด ๋จ์ ์ฐ๊ฒฐ๋ฆฌ์คํธ์์์ ์ฝ์ ๊ณผ ๊ฐ๋ค.
'๐พ ์๋ฃ๊ตฌ์กฐ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
์๋ฃ๊ตฌ์กฐ 2 - ์ํํธ์จ์ด์ ์๊ณ ๋ฆฌ์ฆ, ์๊ฐ๋ณต์ก๋, ๊ณต๊ฐ๋ณต์ก๋ (0) | 2020.04.06 |
---|---|
์๋ฃ๊ตฌ์กฐ 1 - ๋ฐ์ดํฐ ํํ ๋ฐฉ๋ฒ, ์ปดํจํฐ ์๋ฃ์ ๊ตฌ์กฐ, (0) | 2020.04.02 |
์์คํ ๊ณต๊ฐ ๊ฐ์ฌํฉ๋๋ค