๐Ÿ“ Computer Science/โœ Data Structure

์„ ํ˜• ๊ตฌ์กฐ(Linear Structure)์™€ ๋น„์„ ํ˜• ๊ตฌ์กฐ(Non-Linear Structure)

Blxxming 2020. 4. 24. 13:08

์ž๋ฃŒ๊ตฌ์กฐ ๋ถ„๋ฅ˜

 

1. ์„ ํ˜• ๊ตฌ์กฐ

๋ฐ์ดํ„ฐ๋ฅผ ์—ฐ์†์ ์œผ๋กœ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๋Š” ๋ชจ์–‘์œผ๋กœ ๊ตฌ์„ฑํ•œ๋‹ค.

 

1) ๋ฐฐ์—ด(Array)

  • ๋™์ผํ•œ ์ž๋ฃŒํ˜•์˜ ๋ฐ์ดํ„ฐ๋“ค์ด ๊ฐ™์€ ํฌ๊ธฐ๋กœ ๋‚˜์—ด๋˜์–ด ์ˆœ์„œ๋ฅผ ๊ฐ–๊ณ  ์žˆ๋Š” ์ง‘ํ•ฉ์ด๋‹ค.
  • ๋น ๋ฅธ ์ ‘๊ทผ(O(1))๊ณผ random access๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค.
    • ๋…ผ๋ฆฌ์  ์ €์žฅ ์ˆœ์„œ์™€ ๋ฌผ๋ฆฌ์  ์ €์žฅ ์ˆœ์„œ๊ฐ€ ์ผ์น˜ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ธ๋ฑ์Šค๋กœ ํ•ด๋‹น ์›์†Œ์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค.
    • ์ธ๋ฑ์Šค๋ž€ ๋ฐฐ์—ด์˜ ์š”์†Œ๋ฅผ ๊ฐ„๋‹จํžˆ ๊ตฌ๋ณ„ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” ๋ฒˆํ˜ธ์ด๋‹ค. (0 ~ n-1)
  • ์ •์ ์ธ ์ž๋ฃŒ ๊ตฌ์กฐ๋กœ ๊ธฐ์–ต ์žฅ์†Œ์˜ ์ถ”๊ฐ€๊ฐ€ ์–ด๋ ต๊ณ  ๋ฐ์ดํ„ฐ ์‚ญ์ œ ์‹œ ๋ฐ์ดํ„ฐ๊ฐ€ ์ €์žฅ๋˜์–ด ์žˆ๋˜ ๊ธฐ์–ต ์žฅ์†Œ๋Š” ๋นˆ ๊ณต๊ฐ„์œผ๋กœ ๋‚จ์•„์žˆ์–ด ๋ฉ”๋ชจ๋ฆฌ ๋‚ญ๋น„๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.

 

2) ๋ฐฐ์—ด ๋ฆฌ์ŠคํŠธ(Array List)

  • ๋ฐฐ์—ด๊ณผ ๊ฐ™์ด ์—ฐ์†๋˜๋Š” ๊ธฐ์–ต ์žฅ์†Œ์— ์ฐจ๋ก€๋Œ€๋กœ ๋ฐ์ดํ„ฐ๊ฐ€ ์ €์žฅ๋˜์ง€๋งŒ ๋นˆ ๊ณต๊ฐ„์ด ์—†๋‹ค.
  • ๊ธฐ์–ต ์žฅ์†Œ๋ฅผ ์—ฐ์†์ ์œผ๋กœ ๋ฐฐ์ •๋ฐ›๊ธฐ ๋•Œ๋ฌธ์— ๊ธฐ์–ต ์žฅ์†Œ ์ด์šฉ ํšจ์œจ์€ ๊ฐ€์žฅ ์ข‹๋‹ค.
  • ์ ‘๊ทผ(O(1))์€ ๋น ๋ฅด์ง€๋งŒ ์‚ฝ์ž…๊ณผ ์‚ญ์ œ(O(n)) ์‹œ ์ž๋ฃŒ์˜ ์ด๋™์ด ํ•„์š”ํ•˜๋‹ค. 

 

3) ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ(Liked List)

  • ์ž๋ฃŒ๋“ค์„ ๋ฐ˜๋“œ์‹œ ์—ฐ์†์ ์œผ๋กœ ๋ฐฐ์—ด์‹œํ‚ค์ง€ ์•Š๊ณ  ์ž„์˜์˜ ๊ธฐ์–ต๊ณต๊ฐ„์— ๊ธฐ์–ต์‹œํ‚ค๋˜, ์ž๋ฃŒ ํ•ญ๋ชฉ์˜ ์ˆœ์„œ์— ๋”ฐ๋ผ ๋…ธ๋“œ์˜ ํฌ์ธํ„ฐ ๋ถ€๋ถ„์„ ์ด์šฉํ•˜์—ฌ ์„œ๋กœ ์—ฐ๊ฒฐ์‹œํ‚จ๋‹ค.
  • ๊ฐ๊ฐ์˜ ์›์†Œ๋“ค์€ ์ž์‹ ์˜ ์œ„์น˜์˜ ์ด์ „, ๋‹ค์Œ ์›์†Œ์˜ ์œ„์น˜๋งŒ์„ ๊ธฐ์–ตํ•œ๋‹ค.
  • ๋™์ ์ธ ํฌ๊ธฐ๋ฅผ ๊ฐ€์ ธ ์‚ฝ์ž…๊ณผ ์‚ญ์ œ(O(1))๊ฐ€ ์šฉ์ดํ•˜์ง€๋งŒ ๊ฒ€์ƒ‰(O(n)) ์†๋„๊ฐ€ ๋А๋ฆฌ๋‹ค. ์‚ฝ์ž…๊ณผ ์‚ญ์ œ ์ „์— ๊ฒ€์ƒ‰์ด ํ•„์š”ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ฒฐ๊ตญ ๋ชจ๋‘ O(n)์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„๋ฅผ ๊ฐ–๋Š”๋‹ค. 

 

4) ์Šคํƒ(Stack)

  • ํ•œ์ชฝ ๋์œผ๋กœ๋งŒ ์ž๋ฃŒ์˜ ์‚ฝ์ž…, ์‚ญ์ œ ์ž‘์—…์ด ์ด๋ฃจ์–ด์ง„๋‹ค.
  • LIFO(Last In First Out): ๊ฐ€์žฅ ๋‚˜์ค‘์— ์‚ฝ์ž…๋œ ์ž๋ฃŒ๊ฐ€ ๊ฐ€์žฅ ๋จผ์ € ์‚ญ์ œ๋œ๋‹ค.

 

5) ํ(Queue)

  • ํ•œ์ชฝ์—์„œ๋Š” ์‚ฝ์ž… ์ž‘์—…์ด ์ด๋ฃจ์–ด์ง€๊ณ  ๋‹ค๋ฅธ ํ•œ์ชฝ์—์„œ๋Š” ์‚ญ์ œ ์ž‘์—…์ด ์ด๋ฃจ์–ด์ง„๋‹ค.
  • FIFO(First In First Out): ๊ฐ€์žฅ ๋จผ์ € ์‚ฝ์ž…๋œ ์ž๋ฃŒ๊ฐ€ ๊ฐ€์žฅ ๋จผ์ € ์‚ญ์ œ๋œ๋‹ค.
  • ์šฐ์„ ์ˆœ์œ„ ํ(Priority Queue): ์šฐ์„ ์ˆœ์œ„๋ฅผ ๊ฐ€์ง„ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋กœ ๋ณดํ†ต ํž™(Heap)์œผ๋กœ ๊ตฌํ˜„ํ•œ๋‹ค.

 

2. ๋น„์„ ํ˜• ๊ตฌ์กฐ

์„ ํ˜• ๊ตฌ์กฐ์™€๋Š” ๋‹ฌ๋ฆฌ ๋น„์„ ํ˜•์ ์ธ ๊ณ„์ธต ๊ตฌ์กฐ๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค.

 

๊ทธ๋ž˜ํ”„์™€ ํŠธ๋ฆฌ์˜ ์ฐจ์ด

 

1) ๊ทธ๋ž˜ํ”„(graph)

์ •์ (๋…ธ๋“œ)๊ณผ ์„ ๋ถ„(๊ฐ„์„ )์˜ ์ง‘ํ•ฉ์ด๋‹ค.

 

2) ํŠธ๋ฆฌ(Tree)

์ •์ (๋…ธ๋“œ)๊ณผ ์„ ๋ถ„(๊ฐ„์„ )์„ ์ด์šฉํ•˜์—ฌ ์‚ฌ์ดํด์„ ์ด๋ฃจ์ง€ ์•Š๋„๋ก ๊ตฌ์„ฑํ•œ ๊ทธ๋ž˜ํ”„์˜ ํŠน์ˆ˜ํ•œ ํ˜•ํƒœ๋กœ ๊ณ„์ธต์  ๊ด€๊ณ„๋ฅผ ํ‘œํ˜„ํ•œ๋‹ค.

 

ํŠธ๋ฆฌ์˜ ๊ตฌ์„ฑ์š”์†Œ