자료 구조

2024. 7. 11. 09:53컴퓨터학 개론

1. 배열, 구조체, 포인터

배열: 타입이 같은 데이터를 하나로 저장하는 구조

구조체: 타입이 서로 달라도 데이터를 하나로 저장할 수 있는 구조

 포인터

  • &연산자: 데이터의 주소를 추출
  • *연산자: 포인터가 가리키는 곳의 데이터를 추출

동적 메모리 할당: 프로그램이 실행되는 도중 메몰 할당. 필요한 만큼 사용하고 다시 되돌림. 메모리 효율성 증가.

ex) 

int *p;

p=(int*) malloc(sizeof(int));

...

free(p);

자료구조 개요

자료구조: 데이터를 효율적으로 사용하기 위해 체계적으로 관리하는 방법

 

자료구조의 분류

  • 선형 구조: 데이터들이 한 줄로 늘어선 자료구조.
  • 비선형 구조: 하나의 자료 뒤에 여러 개의 자료가 존재하는 구조.

알고리즘: 적합한 순서를 통해 제한된 시간 내에 문제를 해결하는 명령어들의 집합.

배열

배열에서의 데이터 추가

연결 리스트

연결 리스트: 데이터들이 데이터 주소에 따라 연결된 방식. 물리적 순서는 일치하지 않아도 됨.

 

연결 리스트 구조

  • 노드: 연결 리스트는 <원소(데이터), 주소> 단위로 구성. 다음에 이어질 데이터에 대한 주소 포함.
  • 노드의 구조: 데이터 필드& 링크 필드

 

연결 리스트의 분류

  • 단순 연결 리스트: 노드와 링크 필드가 하나임. 링크 필드는 다음 노드와 연결되는 가장 기본적인 구조.
  • 이중 연결 리스트: 양쪽으로 모두 순회할 수 있음. 

연결 리스트 추가 & 삭제

구분 배열 연결 리스트
데이터 검색 기능 인덱스를 알면 쉽게 찾을 수 있음 첫 노드부터 순차적으로 탐색함
메모리 공간 자료를 위한 메모리 공간이 필요 자료를 위한 공간 이외에 링크 필드의 포인터를 위한 메모리 공간도 필요
메모리 사용 정적 메모리를 사용하기에 최대 자료 개수를 미리 알아야함 프로그램 실행 도중에도 메모리 공간을 할당 받을 수 있음
데이터 추가 및 삭제 시간이 오래 걸림 시간이 적게 걸림

스택

스택: 데이터를 일렬로 쌓아둔 형태의 자료 구조

 

스택의 구조

  • 스택에서는 톱으로 맨 위의 부분에 데이터를 추가하거나 데이터를 삭제함.(중간에 데이터 추가 및 삭제 불가능)
  • LIFO: last in first out 마지막에 들어간 데이터가 제일 먼저 나옴!

 

스택 데이터 추가 및 삭제

  • 푸시(push): 데이터를 추가
  • 팝(pop): 데이터 삭제

 

  • 데이터가 한 방향에서 삽입되고 반대 방향으로만 삭제되는 자료 구조.
  • 한쪽 끝을 front 다른 쪽을 rear로 정의하여 삽입 연산을 수행.  
  • FIFO: first in first out. 먼저 삽입된 데이터가 먼저 삭제됨

큐에서 데이터 추가 및 삭제

 

원형 큐

원형 큐:선형 큐의 비효율적인 메모리 사용으로 인해 만들어짐.

 

큐의 전단과 후단을 관리하기 위해서 2개의 변수 사용.

front: 첫 번째 요소 하나 앞의 인덱스

rear: 마지막 요소의 인덱스

 

front와 rear 가 같은 경우는 공백 상태이거나 포화 상태인 경우.

공백 상태와 포화상태 구분을 위해 하나의 공간을 비워 둠. 

'컴퓨터학 개론' 카테고리의 다른 글

데이터 통신과 네트워크  (0) 2024.07.12
알고리즘  (0) 2024.07.11
git & 리눅스 우분투  (1) 2024.07.08
컴퓨터 과학 개론  (0) 2024.06.27