λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
자료ꡬ쑰

μ„ ν˜• 자료ꡬ쑰(Linear Data Structure)

by μ„œμ•„λž‘πŸ˜ 2023. 8. 11.

 


μ„ ν˜• 자료ꡬ쑰(Linear Data Structure)

μ„ ν˜• μžλ£Œκ΅¬μ‘°λŠ” 데이터 μš”μ†Œλ“€μ΄ 일렬둜 λ°°μΉ˜λ˜μ–΄ μžˆλŠ” 자료ꡬ쑰λ₯Ό μ˜λ―Έν•©λ‹ˆλ‹€. μ΄λŸ¬ν•œ μžλ£Œκ΅¬μ‘°μ—μ„œ 데이터 μš”μ†ŒλŠ” μˆœμ„œλ₯Ό 가지며, 각각의 μš”μ†ŒλŠ” λ°”λ‘œ 이전 μš”μ†Œμ™€ λ°”λ‘œ λ‹€μŒ μš”μ†Œμ™€ 관련이 μžˆμŠ΅λ‹ˆλ‹€. μ„ ν˜• μžλ£Œκ΅¬μ‘°λŠ” λ°μ΄ν„°λ₯Ό μˆœμ°¨μ μœΌλ‘œ μ ‘κ·Όν•˜κ³  μ‘°μž‘ν•˜λŠ”λ° μœ μš©ν•˜λ©°, κ°„λ‹¨ν•œ κ΅¬μ‘°λ‘œμ„œ λ‹€μ–‘ν•œ μ•Œκ³ λ¦¬μ¦˜κ³Ό μ‘μš© λΆ„μ•Όμ—μ„œ ν™œμš©λ©λ‹ˆλ‹€.

μ—¬λŸ¬ κ°€μ§€ μ„ ν˜• μžλ£Œκ΅¬μ‘°μ˜ μ˜ˆμ‹œμ™€ νŠΉμ§•μ„ μ‚΄νŽ΄λ³΄κ² μŠ΅λ‹ˆλ‹€

1. λ°°μ—΄ (Array)
   - κ°€μž₯ κΈ°λ³Έμ μΈ μ„ ν˜• μžλ£Œκ΅¬μ‘°λ‘œ, λ™μΌν•œ λ°μ΄ν„° νƒ€μž…μ˜ μš”μ†Œλ“€μ„ μˆœμ°¨μ μœΌλ‘œ μ €μž₯ν•©λ‹ˆλ‹€.
   - μΈλ±μŠ€λ₯Ό μ‚¬μš©ν•˜μ—¬ κ° μš”μ†Œμ— μ ‘κ·Όν•˜κ³ , νŠΉμ • μœ„μΉ˜μ— μš”μ†Œλ₯Ό μ‚½μž…, μ‚­μ œν•  μˆ˜ μžˆμŠ΅λ‹ˆλ‹€.
   - λ°μ΄ν„° κ²€μƒ‰κ³Ό μ ‘근이 λΉ λ₯΄μ§€λ§Œ, μ€‘간에 μš”μ†Œλ₯Ό μ‚½μž…ν•˜κ±°λ‚˜ μ‚­μ œν•  κ²½μš° λ°μ΄ν„° μ΄λ™μ΄ ν•„μš”ν•˜λ―€λ‘œ λΉ„νš¨μœ¨μ μΌ μˆ˜ μžˆμŠ΅λ‹ˆλ‹€.

2. μ—°κ²° λ¦¬μŠ€νŠΈ (Linked List)
   - λ…Έλ“œ(Node)듀이 μ—°κ²°λœ κ΅¬μ‘°λ‘œ λ°μ΄ν„°λ₯Ό μ €μž₯ν•©λ‹ˆλ‹€.
   - κ° λ…Έλ“œλŠ” λ°μ΄ν„°μ™€ λ‹€μŒ λ…Έλ“œλ₯Ό κ°€λ¦¬ν‚€λŠ” ν¬μΈν„°λ‘œ κ΅¬μ„±λ©λ‹ˆλ‹€.
   - λ°μ΄ν„°μ˜ μ‚½μž…κ³Ό μ‚­μ œκ°€ λΉ λ₯΄λ©°, λ™μ μœΌλ‘œ ν¬κΈ°λ₯Ό μ‘°μ •ν•  μˆ˜ μžˆμŠ΅λ‹ˆλ‹€.
   - ν•˜μ§€λ§Œ νŠΉμ • μœ„μΉ˜μ˜ μš”μ†Œμ— μ ‘κ·Όν•˜λ €λ©΄ μ²˜μŒλΆ€ν„° μˆœνšŒν•΄μ•Ό ν•˜λ―€λ‘œ κ²€μƒ‰μ΄ μƒλŒ€μ μœΌλ‘œ λŠλ¦΄ μˆ˜ μžˆμŠ΅λ‹ˆλ‹€.

3. μŠ€νƒ (Stack)
   - ν›„μž…μ„ μΆœ(LIFO, Last-In-First-Out) μ›μΉ™μ„ λ”°λ₯΄λŠ” μžλ£Œκ΅¬μ‘°μž…λ‹ˆλ‹€.
   - μš”μ†Œλ₯Ό μŠ€νƒμ˜ λ§¨ μœ„에 μ‚½μž…ν•˜κ±°λ‚˜ μ‚­μ œν•  μˆ˜ μžˆμŠ΅λ‹ˆλ‹€.
   - μ£Όλ‘œ ν•¨μˆ˜ ν˜ΈμΆœ, μž¬κ·€ μ•Œκ³ λ¦¬μ¦˜ λ“±μ—μ„œ μ‚¬μš©λ©λ‹ˆλ‹€.

4. ν (Queue)
   - μ„ μž…μ„ μΆœ(FIFO, First-In-First-Out) μ›μΉ™μ„ λ”°λ₯΄λŠ” μžλ£Œκ΅¬μ‘°μž…λ‹ˆλ‹€.
   - μš”μ†Œλ₯Ό νμ˜ λ’€μ— μ‚½μž…ν•˜κ³  μ•žμ—μ„œ μ‚­μ œν•  μˆ˜ μžˆμŠ΅λ‹ˆλ‹€.
   - ν”„λ‘œμ„ΈμŠ€ μŠ€μΌ€μ€„링, μž‘μ—… λŒ€κΈ°μ—΄ λ“±μ—μ„œ μ‚¬μš©λ©λ‹ˆλ‹€.

5. λ°ν¬ (Deque, Double-Ended Queue)
   - μ–‘μͺ½ λμ—μ„œ μ‚½μž…κ³Ό μ‚­μ œκ°€ κ°€λŠ₯ν•œ μžλ£Œκ΅¬μ‘°μž…λ‹ˆλ‹€.
   - νμ™€ μŠ€νƒμ˜ νŠΉμ„±μ„ κ²°ν•©ν•œ κ²ƒμœΌλ‘œ, λ‹€μ–‘ν•œ μƒν™©μ—μ„œ μœ μš©ν•©λ‹ˆλ‹€.

6. μ„ ν˜• λ°°μ—΄ (Vectors)
   - λ°°μ—΄κ³Ό μœ μ‚¬ν•˜μ§€λ§Œ λ™μ μœΌλ‘œ ν¬κΈ°λ₯Ό μ‘°μ •ν•  μˆ˜ μžˆλŠ” λ™μ  λ°°μ—΄ μžλ£Œκ΅¬μ‘°μž…λ‹ˆλ‹€.
   - λ°°μ—΄μ˜ μž₯점과 μ—°κ²° λ¦¬μŠ€νŠΈμ˜ μž₯점을 μ‘°ν•©ν•œ κ²ƒμœΌλ‘œ, μš”μ†Œμ˜ μ‚½μž…, μ‚­μ œ, κ²€μƒ‰μ΄ νš¨μœ¨μ μž…λ‹ˆλ‹€.

μ„ ν˜• μžλ£Œκ΅¬μ‘°λŠ” λ°μ΄ν„°μ˜ μˆœμ„œλ₯Ό μ€‘μš”ν•˜κ²Œ λ‹€λ£¨λ©°, κ°κ°μ˜ νŠΉμ§•κ³Ό μž₯단점에 λ”°λΌ λ‹€μ–‘ν•œ μƒν™©μ—μ„œ μ μ ˆν•œ μ„ νƒμ΄ ν•„μš”ν•©λ‹ˆλ‹€.

 

 

 

μ„ ν˜• 자료ꡬ쑰의 μ‚½μž…/μ‚­μ œ/검색

μ„ ν˜• μžλ£Œκ΅¬μ‘°μΈ λ°°μ—΄, μ—°κ²° λ¦¬μŠ€νŠΈ, μŠ€νƒ, ν λ“±μ„ μ‚½μž…/μ‚­μ œ/κ²€μƒ‰μ˜ μΈ‘λ©΄μ—μ„œ λΉ„κ΅ν•˜λ©΄μ„œ κ°κ°μ˜ μž₯단점을 μ‚΄νŽ΄λ³΄κ² μŠ΅λ‹ˆλ‹€.


1. λ°°μ—΄ (Array)
   - μž₯점
     - μΈλ±μŠ€λ₯Ό μ‚¬μš©ν•˜μ—¬ λΉ λ₯΄κ²Œ μš”μ†Œμ— μ ‘κ·Ό κ°€λŠ₯ (O(1)).
     - λ©”λͺ¨λ¦¬κ°€ μ—°μ†μ μœΌλ‘œ ν• λ‹Ήλ˜λ―€λ‘œ μΊμ‹œ ν™œμš©μ— μœ λ¦¬ν•  μˆ˜ μžˆμŒ.
   - λ‹¨μ 
     - μš”μ†Œμ˜ μ‚½μž…/μ‚­μ œ μ‹œ ν•΄λ‹Ή μœ„μΉ˜μ˜ μš”μ†Œλ₯Ό μ΄λ™ν•΄μ•Ό ν•˜λ―€λ‘œ λΉ„νš¨μœ¨μ  (μ΅œμ•…μ˜ κ²½μš° O(n)).
     - ν¬κΈ°κ°€ κ³ μ •λ˜μ–΄ λ™μ μœΌλ‘œ ν¬κΈ°λ₯Ό μ‘°μ •ν•˜κΈ° μ–΄λ €μ›€.

2. μ—°κ²° λ¦¬μŠ€νŠΈ (Linked List)
   - μž₯점
     - μ‚½μž…/μ‚­μ œκ°€ λΉ λ₯΄κ³  νš¨μœ¨μ  (O(1)), λ…Έλ“œλ§Œ μˆ˜μ •ν•˜λ©΄ λ˜λ―€λ‘œ λ°μ΄ν„° μ΄λ™ μ—†μŒ.
     - λ™μ μœΌλ‘œ ν¬κΈ°λ₯Ό μ‘°μ • κ°€λŠ₯.
   - λ‹¨μ 
     - κ²€μƒ‰ μ‹œ μ²˜μŒλΆ€ν„° μˆœνšŒν•΄μ•Ό ν•˜λ―€λ‘œ λŠλ¦΄ μˆ˜ μžˆμŒ (O(n)).
     - μΆ”가적인 λ©”λͺ¨λ¦¬λ₯Ό μ‚¬μš©ν•˜μ—¬ ν¬μΈν„°λ‘œ μΈν•œ μ˜€λ²„ν—€λ“œκ°€ λ°œμƒ.

3. μŠ€νƒ (Stack)
   - μž₯점
     - ν›„μž…μ„ μΆœ(LIFO)으둜 μ‚½μž…/μ‚­μ œκ°€ λΉ λ₯΄κ³  κ°„단 (O(1)).
     - ν•¨μˆ˜ ν˜ΈμΆœ, μž¬κ·€ λ“±μ—μ„œ ν™œμš© κ°€λŠ₯.
   - λ‹¨μ 
     - μŠ€νƒμ˜ λ§¨ μœ„에 μžˆλŠ” μš”μ†Œμ—λ§Œ μ ‘κ·Ό κ°€λŠ₯ν•˜λ―€λ‘œ μ€‘κ°„μ˜ μš”μ†Œμ— μ ‘κ·Όν•˜κΈ° μ–΄λ €μ›€.
     - ν¬κΈ° μ œν•œμ΄ μžˆλŠ” κ²½μš° λ©”λͺ¨λ¦¬ μ˜€λ²„ν”Œλ‘œμš° κ°€λŠ₯μ„± μžˆμŒ.

4. ν (Queue)
   - μž₯점
     - μ„ μž…μ„ μΆœ(FIFO)둜 μ‚½μž…/μ‚­μ œκ°€ λΉ λ₯΄κ³  κ°„단 (O(1)).
     - ν”„λ‘œμ„ΈμŠ€ μŠ€μΌ€μ€„링, μž‘μ—… λŒ€κΈ°μ—΄ λ“±μ—μ„œ ν™œμš© κ°€λŠ₯.
   - λ‹¨μ 
     - νμ˜ μ•žλΆ€λΆ„에 μžˆλŠ” μš”μ†Œμ—λ§Œ μ ‘κ·Ό κ°€λŠ₯ν•˜λ―€λ‘œ μ€‘κ°„μ˜ μš”μ†Œμ— μ ‘κ·Όν•˜κΈ° μ–΄λ €μ›€.
     - ν¬κΈ° μ œν•œμ΄ μžˆλŠ” κ²½μš° λ©”λͺ¨λ¦¬ μ˜€λ²„ν”Œλ‘œμš° κ°€λŠ₯μ„± μžˆμŒ.

5. λ°ν¬ (Deque, Double-Ended Queue)
   - μž₯점
     - μ–‘μͺ½ λμ—μ„œ μ‚½μž…/μ‚­μ œκ°€ λΉ λ₯΄κ³  κ°„단 (O(1)).
     - νμ™€ μŠ€νƒμ˜ νŠΉμ„±μ„ κ²°ν•©ν•˜μ—¬ λ‹€μ–‘ν•œ μƒν™©μ— ν™œμš© κ°€λŠ₯.
   - λ‹¨μ 
     - μ€‘κ°„μ˜ μš”μ†Œμ— μ ‘κ·Όν•˜κΈ° μ–΄λ €μšΈ μˆ˜ μžˆμŒ.
     - λ°ν¬μ˜ κ΅¬ν˜„에 λ”°λΌ λ©”λͺ¨λ¦¬ μ‚¬μš©λŸ‰μ΄ μ¦κ°€ν•  μˆ˜ μžˆμŒ.

'자료ꡬ쑰' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

자료ꡬ쑰λ₯Ό λ°°μ›Œμ•Ό ν•˜λŠ” 이유  (0) 2023.08.11

λŒ“κΈ€