효율적인 프로그램을 작성할 때 가장 우선적인 고려사항은 저장 공간의 효율성과 실행시간의 신속성이다. 자료 구조는 프로그램에서 사용하기 위한 자료를 기억장치의 공간 내에 저장하는 방법과 저장된 그룹 내에 존재하는 자료 간의 관계, 처리 방법 등을 연구 분석하는 것을 말한다.
배열은 동일한 자료형의 데이터들이 같은 크기로 나열되어 순서를 갖고 있는 집합이다.
첨자는 보통 글자보다 작게 써서 덧붙임의 의미를 나타내는 글자
선형 리스트는 일정한 순서에 의해 나열된 자료 구조이다.
포인터는 현재의 위치에서 다음 노드의 위치를 알려주는 요소
연속 리스트(Contiguous List)
- 연속 리스트는 배열과 같이 연속되는 기억장소에 저장되는 자료 구조이다.
- 연속 리스트는 기억장소를 연속적으로 배정받기 때문에 기억장소 이용 효율은 밀도가 1로서 가장 좋다.
- 연속 리스트는 중간에 데이터를 삽입하기 위해서는 연속된 빈 공간이 있어야 하며, 삽입∙삭제 시 자료의 이동이 필요하다.
밀도가 1
연속 리스트는 기억장소를 연속적으로 배정받아 데이터를 기억하므로 배정된 기억장소를
빈 공간없이 꽉 차게 사용한다는 의미
연결 리스트(Linked List)
- 연결 리스트는 자료들을 반드시 연속적으로 배열시키지는 않고 임의의 기억공간에 기억시키되, 자료 항목의 순서에 따라 노드의 포인터 부분을 이용하여 서로 연결시킨 자료 구조이다.
- 연결 리스트는 노드의 삽입∙삭제 작업이 용이하다.
- 기억 공간이 연속적으로 놓여 있지 않아도 저장할 수 있다.
- 연결 리스트는 연결을 위한 링크(포인터) 부분이 필요하기 때문에 순차 리스트에 비해 기억 공간의 효율이 좋지 않다.
- 연결 리스트는 연결을 위한 포인터를 찾는 시간이 필요하기 때문에 접근 속도가 느리다.
- 연결 리스트는 중간 노드 연결이 끊어지면 그 다음 노드를 찾기 힘들다.
스택은 리스트의 한쪽 끝으로만 자료의 삽입, 삭제 작업이 이루어지는 자료 구조이다.
TOP
- 스택으로 할당된 기억 공간에 가장 마지막으로 삽입된 자료가 기억된 위치를 가리키는 요소이다.
Bottom
- 스택의 가장 밑바닥이다.
자료의 삽입(Push)
Top(스택 포인터)=Top + 1 : 스택 포인터를 1 증가시킨다.
If Top > M(스택의 크기) Then
Overflow : 스택 포인터가 스택의 크기보다 크면, 더이상 자료를 삽입할 수 없으므로 Overflow를 처리한다.
Else
X(스택의 이름)(Top) <- Item : 그렇지 않으면 Item이 가지고 있는 값을 스택의 Top 위치에 삽입한다.
자료의 삭제(Pop Up)
If Top = 0 Then
Underflow : 스택 포인터가 0이면, 스택의 바닥이므로 더 이상 삭제할 자료가 없으므로 Underflow를 처리한다.
Else
Item <- X(Top)
Top = Top - 1 : 그렇지 않으면 Top 위치에 있는 값을 Item으로 옮기고 스택 포인터를 1 감소시킨다.
❊ Stack에 기억되어 있는 자료를 삭제시킬 때는 제일 먼저 삭제할 자료가 있는지 없는지부터 확인해야 한다.
큐는 리스트의 한쪽에서는 삽입 작업이 이루어지고 다른 한쪽에서는 삭제 작업이 이루어지도록 구성한 자료 구조이다.
그래프 G는 정점 V(Vertex)와 간선 E(Edge)의 두 집합으로 이루어진다.