목록알고리즘 & 자료구조 & 네트워크 (29)
오봉이와 함께하는 개발 블로그
컬렉션 프레임워크(Collection Framework) 컬렉션 사전적 의미로 요소(객체)를 수집해 저장한 것 프레임워크 라이브러리 프로그래밍 방식 표준화, 정형화된 체계적인 프로그래밍 방식 미리 정해진 방식대로 개발 누가 작성하든 프로그램이 표준화되기 때문에 프로그램 유지보수하기 쉬워진다. 컬렉션 프레임워크 컬렉션(다수의 객체)를 다루기 위한 표준화된 프로그래밍 방식 많은 양의 데이터를 저장, 삭제, 검색, 비교, 정렬 작업 등을 편리하게 쉽게 수행 객체들을 효율적으로 추가, 삭제, 검색할 수 있도록 제공되는 컬렉션 라이브러리 인터페이스를 통해서 정형화된 방법으로 다양한 컬렉션 클래스 이용 인터페이스와 다형성을 이용한 객체지향적 설계를 통해 표준화 되어 있기 때문에 사용법 편하고 재사용성이 높은 코드 ..
단일 연결 리스트 (singly linked list) 데이터를 연결(linked) 형태로 표현 리스트 내의 각 항목들이 순차적으로 저장될 필요 없이 기억 장소 내 어디든 저장되어 있어도 됨 다음 항목을 찾기 위해 각 항목들은 다음 항목을 가리키는 포인터를 갖고 있음 이 포인터를 링크(link)라고 부름 단일 연결 리스트 기억 장소 내의 표현 리스트 각 항목은 기억 장소의 순서대로 위치하지 않는다. 링크라는 필드를 이용하여 리스트 원소들의 순서를 나타냄 리스트 끝에는 더 이상 원소가 없다는 것을 나타내기 위하여 마지막 원소의 링크 필드에 NULL(역슬래시)로 표시 단일 연결 리스트의 기본 연산 노드 생성 노드 삽입 노드 삭제 단일 연결 리스트의 노드 생성1 가용 기억 공간 중에서 리스트에 연결할 수 있도..
연결 리스트 단일 연결 리스트 원형 연결 리스트 이중 연결 리스트 선형 리스트(linear list) 각 데이터가 배열과 같이 연속되는 기억장소에 순차적으로 저장되는 자료 구조 1차원 배열과 비슷한 구조이지만, 원소의 개수가 유동적 원소를 나열한 순서가 원소들의 순서가 됨 원소들의 논리적인 순서와 메모리에 저장하는 물리적인 순서가 같은 구조로 되어 있음 순차 자료구조에는 원소들이 순서대로 연속 저장되어 있기 때문에 시작위치와 원소의 길이를 알면 특정 원소의 위치를 알 수 있음 리스트에서 처리할 수 있는 연산 길이 : 리스트의 길이를 구하는 연산 접근 : 리스트의 내용을 조사하거나 변경하기 위해 위치를 찾는 연산 검색 : 리스트의 노드들 중에서 필요한 노드 (i번째)를 찾는 연산 저장 : i번째에 노드에 ..
데크(deQue : double endedQueue) 삽입과 삭제가 양끝에서 이루어지는 구조 스택과 큐를 하나의 선형 리스트 구조에 복합시킨 형태 end1과 end2 포인터 사용 양쪽 끝에서의 오버플로우의 가능성을 줄이기 위해 데크 내의 중심 근처에부터 저장 가능 데크 예제 DequeArray.java package AlgoPractice.deque; import java.util.ArrayDeque; import java.util.Deque; public class DequeArray { public static void main(String[] args) { Deque deque = new ArrayDeque(); System.out.println("데이터 3개 삽입"); deque.add("사과")..
큐(Queue) 선형 리스트 구조의 특별한 형태 기억장소의 한쪽 끝에서 데이터 입력이 이루어지고, 다른 한쪽에서 데이터의 삭제가 이루어지는 구조 먼저 삽입한 데이터가 먼저 삭제되는 선입선출(FIFO : First In First Out)구조 전위 포인터(Front) 데이터가 삭제되는 끝을 가르키는 포인터 후위 포인터(Rear) 데이터가 삽입되는 끝을 가르키는 포인터 큐에서 오버플로우 해결 방법 후위 포인터(Rear)의 값이 n(큐의 크기)과 같을 때 새로운 데이터를 삽입하면 오버폴르오 발생 이동 큐(moving queue) 사용 앞 부분이 비어 있는 경우 큐의 데이터를 앞 부분으로 이동 문제 : 데이터 이동에 따른 시간적 부담 원형 큐(circular queue) 사용 선형 큐의 앞(front)과 뒤(r..