본문 바로가기

CS 공부/자료구조22

큐(Queue) 최종 수정 : 24.12.28큐(Queue)1. 큐의 정의큐는 리스트의 한쪽 끝에서 원소를 삽입하고 다른 한쪽 끝에서는 원소의 삭제가 일어나는 구조이다. 이를 선입선출(FIFO : First In First Out)이라고도 한다. 프로세서 스케줄링에서 FCFS(Fist Come Fist Service) 알고리즘과 같이 먼저 작업대기 큐에 들어오면 먼저 서비스를 받는 형식이다. 큐는 near와 front라고 하는 2개의 포인터를 사용한다.rear(또는 tail)☞ rear에서 원소의 삽입 연산이 실행되며, 큐에서 원소를 삽입하기 위해서 rear 포인터를 1 증가시키고 원소를 삽입하게 된다.front(또는 head)☞ front에서 원소의 삭제 연산이 일어난다. front 포인터 위치에 있는 원소를 삭제하고.. 2024. 12. 29.
스택(Stack) 최종 수정 : 24.12.28스택(Stack)1. 스택의 정의스택은 "쌓아 올린다"는 뜻을 갖고 있다. 선형의 구조를 가지며, 한쪽 끝이 막혀 있고, 다른 한쪽으로만 삽입(입력)과 삭제(출력)가 가능한 구조이다. 후입선출구조(Last-In First-Out[LIFO])라 한다. 스택에서 사용하는 연산은 삽입(PUSH), 삭제(POP)이 있다. 현재 원소(스택의 최상위 원소)가 들어있는 위치를 지시하는 top이라는 포인터가 있고, 스택의 바닥을 지시하는 포인터로 bottom이 있으며, top을 통해서 데이터를 삽입/삭제할 수 있다.PUSH 연산 : 스택에 원소를 입력하는 연산, top이 증가한다.POP 연산 : 스택의 top에 있는 원소를 출력하는 연산, top이 감소한다. 스택은 입력의 순서와 출력의 순.. 2024. 12. 28.
일반 리스트 최종 수정 : 24.12.27일반 리스트1. 정의일반 리스트는 0개 이상의 원소 또는 서브 리스트를 가지는 유한 리스트이다. 일반 리스트 표현은 L = (e1, e2, e3, ..., en)으로 하고, L은 리스트의 이름이며, n은 리스트 내에 원소의 개수를 의미한다. n ≥ 1인 경우의 첫 번째 원소는 L의 head이며 head(L)이라 표현한다. 첫 원소(head)를 제외한 나머지 리스트를 L의 tail이라 하며 tail(L)이라 표현한다. ex) A = (a, (b, c))길이 : 2head(A) = a, tail(A) = ((b,c))아래 그림은 일반 리스트의 노드 구조를 나타낸다. tag 필드는 data 필드 값이 원자인지 포인터 값인지를 표시하며 data 값이 원잣값이면 tog는 0이고, da.. 2024. 12. 27.
비사용 기억공간 최종 수정 : 24.12.27비사용 기억공간1. 순차 가용공간에서 노드 획득리스트에서 노드의 생성을 위해 노드가 사용할 공간을 할당받아야 하는데, 기억공간을 순차적으로 사용하는 경우에는 이미 사용 중인 공간 이후에 가용공간을 할당받아 사용하게 된다. 그러나 사용 중인 공간 이후로 여유 공간이 없다면 기억공간이 가득 찬 경우로 판단하기 때문에 더 이상 노드의 삽입이 불가능하다. 전체적인 기억 공간으로는 아직 여유가 있지만 순차적으로 공간을 할당받아 사용하기 때문에 기억 공간이 남아 있어도 오버플로가 발생하게 된다. 이러한 문제점 때문에 리스트에서 사용되는 기억 공간의 관리 방식으로는 사용하기 전의 기억공간이나 사용이 끝난 기억공간을 관리의 용이성을 위해 노드로 구성하여 연결한 리스트를 자유 공간 리스트 또.. 2024. 12. 27.
연결 리스트의 종류 최종 수정 : 24.12.27연결 리스트의 종류1. 환형 연결 리스트(Circular Linked List)단순 연결 리스트의 마지막 노드의 포인터를 NULL이 아닌 첫 번째 노드의 주소를 가리키도록 한 형태를 원형 연결 리스트 또는 환형 연결 리스트라고 한다. 어떤 노드에서든 다른 노드를 검색할 수 있다는 장점이 있다. 단, 단순 연결 리스트에서는 첫 노드가 삭제되거나 삽입될 때 head가 변경이 되는데, 환형 연결 리스트는 마지막 노드의 link도 같이 변경되어야 한다. 1) 환형 연결 리스트의 첫 노드 또는 마지막 노드 삽입환형 연결 리스트는 마지막 노드의 링크가 첫 번째 노드를 가리키는 리스트이다. 한 노드에서 임의의 다른 노드로의 접근이 가능하고, head가 첫 노드를 지시하도록 구성한다. 2).. 2024. 12. 27.