본문 바로가기

CS 공부45

스택(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.
연결 리스트의 개념 최종 수정 : 24.12.27연결 리스트의 개념1. 연결 리스트의 필요성배열은 순서 리스트로 기억공간에 연속적으로 저장되므로 논리적인 순서와 물리적인 순서가 같아서 원소들을 찾아 접근하기 쉬우나 삽입과 삭제 연산에서 속도와 성능이 떨어지는 문제가 있다. 이런 문제들을 해결하기 위해 연결 리스트(linked list)라는 구조가 있다. 연결리스트는 연속적인 기억공간을 필요하지 않은 리스트로, 기본단위인 노드(Node)라는 것을 포인트(point)를 이용하여 체인과 같이 연결된 구조이다. 이 구조를 통해 순서 리스트와 단점인 삽입과 삭제의 문제를 해결할 수 있다. 기억공간의 여러 곳에 흩어져 존재할 수 있어 물리적으로 연속된 기억공간을 요구하지 않는다.2. 연결 리스트의 개념노드는 데이터와 링크로 구성되어 .. 2024. 12. 27.