์ƒˆ์†Œ์‹

์•Œ๊ณ ๋ฆฌ์ฆ˜/์ž๋ฃŒ๊ตฌ์กฐ

1. ๋ฆฌ์ŠคํŠธ

  • -
728x90

ํ”„๋กœ๊ทธ๋žจ์„ ์งœ๋‹ค๋ณด๋ฉด ๋ฐฐ์—ด์„ ์‚ฌ์šฉํ•  ๋•Œ๊ฐ€ ๋งŽ์•„์ง„๋‹ค.

๋ฐฐ์—ด์€ ํฌ๊ธฐ๊ฐ€ ํ•œ์ •๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ณต๊ฐ„์ด ๋ชจ์ž๋ผ๋Š” ๊ฒฝ์šฐ๊ฐ€ ์ข…์ข… ์ƒ๊ธธ ์ˆ˜ ์žˆ๋Š”๋ฐ, 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
Contents

ํฌ์ŠคํŒ… ์ฃผ์†Œ๋ฅผ ๋ณต์‚ฌํ–ˆ์Šต๋‹ˆ๋‹ค

์ด ๊ธ€์ด ๋„์›€์ด ๋˜์—ˆ๋‹ค๋ฉด ๊ณต๊ฐ ๋ถ€ํƒ๋“œ๋ฆฝ๋‹ˆ๋‹ค.