선형 자료 구조

Oak_Cassia·2021년 12월 12일
0

Data Structure

목록 보기
2/5

array

자료형이 같은 자료를 나열하여 메모리에 연속으로 저장하여 만든 자료 그룹

index
배열 요소를 구별하기 위한 번호
자료형 배열이름[크기][크기][크기]
pointer
변수의 주소 값이 저장된 변수, (32비트 4바이트), (64비트 8바이트)

순차 자료구조

  • 메모리의 저장 시작 위치부터 빈 자리 없이 자료를 순서대로 연속하여 저장한다.
  • 삽입, 삭제 연산을 해도 빈자리 없이 순서대로 연속하여 저장된다.

linear list, ordered list

  • 메모리에 저장하는 구현 방식에 따라 순차 방식으로 구현하는 선형 순차 리스트와 연결 방식으로 구현하는 linear linked list로 나뉜다.
  • linear sequential list는 array를 이용해 구현한다.
  • Row Major Order, Column Major Order
  • 순차 자료구조는 물리적 주소의 순서로 간단히 구성할 수 있고, 인덱스를 사용해 주소를 계산할 수 있어 특정원소를 쉽게 액세스할 수 있다.
  • 원소를 삽입하거나 삭제할 때 물리적으로 원소들을 움직여 연속 저장 순서를 유지해야 하므로 이동 연산에 대하여 오버헤드가 발생한다.

Linked Data Structure, none-sequential data structure

  • 포인터를 이용해 구현
  • 각 원소에 저장되어 있는 다음 원소의 주소에 의해 순서가 연결되는 구현 방식
  • 물리적인 순서를 맞추기 위한 오버헤드가 발생하지 않는다.
  • 노드 단위로 메모리가 할당되며, 저장 위치의 순서와 상관 없이 노드의 링크 필드에 다음 자료의 주소를 저장한다.

singly linked list

  • 노드의 링크 필드가 하나이며, 링크 필드는 다음 노드와 연결되는 구조
  • linear linked list, singly linked linear list
  • 삽입이나 삭제할 경우 링크 필드를 잘 수정해야한다.

circular linked list
마지막 노드가 NULL이 아닌 첫 노드를 가리킨다.
Doubly Linked list
왼쪽 오른쪽 둘을 가리키는 포인터 존재, 양방향으로 순회 가능


stack

  • top으로 정한 곳으로만 접근하도록 제한되어 있다.
  • top에서 삽입과 삭제가 일어나며 top은 스택의 가장 위에 있는데 데이터 위치이다.

system stack

  • 함수의 호출과 복귀 순서를 관리할 때 사용하는 스택.
  • 함수나 서브프로그램 호출이 발생하면 현재 작업 중인 지역변수, 매개변수, 완료 후 복귀할 주소 등의 정보를 stack frame에 저장하여 system stack에 삽입한다. 함수 실행이 끝나면 시스템 스택의 top원소를 pop하면서 프레임에 저장되어 있던 복귀 주소를 확인하고 복귀한다.
  • 스택을 이용한 수식의 괄호 검사
  • 스택을 이용한 표기법 변환
    • prefix notation, infix notation, postfix notation

Queue

  • FIFO
  • front는 삭제 연산을 수행하고 rear는 삽입연산을 수행한다.

sequential queue

  • 1차원 배열을 이용, 포화상태일 때 삽입연산을 수행하지 못함
  • 잘못된 포화 상태를 배열의 비어 있는 앞부분으로 이동하여 해결할 수 있지만 오버헤드가 커서 효율성이 떨어진다.

Circular Queue

  • 1차원 배열을 이용한다. (다른 방식으로 해도 되긴 함)
  • mod n 을 이용해서 접근

Linked Queue

  • 순차 자료구조를 이용하면 큐의 길이를 자유롭게 조절할 수 있고 빈 공간 때문에 생기는 메모리 낭비를 막을 수 있다.

Deque

  • double ended queue: 큐의 양쪽 끝에서 삽입과 삭제가 가능하다.
  • 운영체제의 작업큐(?)
profile
rust로 뭐할까

0개의 댓글