Computer Science/자료구조

3. 기초 데이터 구조

2021. 5. 7. 17:59

이번에는 데이터 구조의 기초에 대해서 이야기해봅시다.

 

우리가 스택, 큐, 리스트, 집합 이러한 데이터 구조를 설계할 때 우선 기초적으로 쓰이는 재료가 있는데 그것이 바로

 

배열과 연결 리스트입니다.

배열을 여러분들이 c, python에서 배웠다시피 순차적인 기억 장소에 할당된 유한한 개수의 데이터 원소를 저장하는 방식입니다. 

c언어에서의 2차원 배열 

이러한 배열에는 1차원, 2차원, 3차원....... 등의 다차원 배열들이 있고 각 배열들은 행 우선 순서 즉, 저 차원 우선적으로 데이터 원소들이 메모리에 할당됩니다. 

배열은 프로그래밍 언어를 공부하면서 꼭 거치게 되는 개념이니까 아시는 분들이 많을 거라고 생각합니다 

 

하지만 연결 리스트는 처음 보는 분들이 더 많을 거라고 생각하는데요 원리를 알고 보면 크게 어렵지 않은 개념입니다:)

 

대표적인 연결리스트들

단순하게 설명하자면 위의 사진처럼, 데이터 원소를 가지는 박스들이 있고 그런 박스들이 연결되어 있는 것이 연결 리스트입니다. 

연결 리스트의 정확한 의미 : 동적 메모리에 할당된, 링크에 의해 연결된 유한 개수의 데이터 원소 노드들!

노드란 아까 설명한 박스처럼 생긴 것이 노드인데요 정확하게 설명하자면 한 개의 데이터 원소를 저장하기 위해서-동적 메모리에 할당된 메모리입니다.

이러한 노드에 들어갈 수 있는 요소가 대표적으로 "원소"와 "링크"가 있습니다. 링크는 단어에서 눈치챌 수 있듯이,  다음의 노드를 가리키거나 이전의 노드를 가리킬 수 있습니다. 

 

그러면 이제 여러 가지 연결 리스트의 종류와 특징들을 알아보겠습니다.  

  1. 단일 연결 리스트 : 연속된 노드로 구성된, 가장 단순한 연결 데이터 구조입니다. 
    1. 각 노드는 원소와 다음 노드의 주소를 저장하는 링크를 가집니다. 
    2. 헤드 노드의 주소를 통해서 접근할 수 있습니다. 
  2. 이중 연결 리스트 : 추가 링크를 사용해서 역방향 순회도 할 수 있습니다. 
    1. 아까와 달리 이전 노드의 주소를 저장하는 링크도 추가적으로 가질 수 있습니다. 
    2. 헤드 노드나 테일 노드의 주소를 통해서 접근할 수 있습니다. 
  3. 원형 연결 리스트 : 마지막 노드의 링크가 헤드 노드의 주소를 가집니다. 
  4. 헤더와 트레일러 : 헤드노드 앞에 특별한 헤더 노드를 추가해서 작업의 편의성을 증진할 수 있습니다  
    1. 비슷하게 테일 노드도 트레일러 노드를 추가할 수 있습니다. 
    2. 이러한 노드를 사용한다면 헤더 노드나 트레일러 노드를 통해서 연결 리스트에 접근할 수 있습니다. 

헤더와 트레일러노드를 가지는 연결리스트

 

여기까지 기초 데이터 구조에 대한 내용이었습니다!

'Computer Science/자료구조' 카테고리의 다른 글
  • 5. 리스트 확장-그룹과 공유
  • 4. 리스트 ADT
  • 2. 재귀
  • 1. 알고리즘 분석
SpaceCowboy
SpaceCowboy
공부한거 기록하는 블로그입니다!!
SpaceCowboy
공부한거 기록하는 블로그
SpaceCowboy
전체
오늘
어제
  • 분류 전체보기
    • 프로그래밍 언어
      • C Programming
      • JavaScript
    • Computer Science
      • 자료구조
      • 알고리즘
      • 객체지향
    • 프레임워크
      • Nest.js
      • TypeORM
    • Web Programming
    • 블록체인
      • 기초
    • 데브옵스
      • Git
      • Docker

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • CSS
  • TypeORM
  • typeorm3.0
  • 자바스크립트챌린지
  • softDelete
  • 자료구조
  • 자바스크립트필기
  • typeormseeding
  • 자바스크립트 필기
  • 재귀
  • 자바스크립트
  • customrepository
  • 복습
  • typeorm0.3
  • 자료구조필기
  • 이중연결리스트
  • JS
  • HTML
  • nestjs
  • 논리삭제

최근 댓글

최근 글

hELLO · Designed By 정상우.
SpaceCowboy
3. 기초 데이터 구조
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.