자료구조: 데이터 집합체를 어떻게 구조화 시키고 관리할 것 인가?
- 선형 자료 구조
1) 연접리스트 (배열) : 메모리적으로 연결
2) 연결리스트 (단일, 이중, 환영 리스트): 논리적으로 연결
-----------------------------------------------------------------------------------------------------------------
나머지 자료구조들은 배열이나 연결 리스트를 응용해서 구현!
-> 스택(Stack), 큐(Queue), 덱(Deque)
- 비선형 자료 구조
1) 트리
2) 그래프
3) 해쉬 테이블
연접 리스트(배열): 물리적 선형 자료구조
데이터 저장 관리를 배열이라는 자료구조로 하겠다.
- Insert(저장), Select(검색), Update(수정), Delete(삭제)
배열 자료구조 성질!
- 항상 0번째 인덱스부터 순차적으로 저장된 형태를 유지하겠다.
프로그램의 구조
배열 자료구조
1단계 : 클래스 정의, 맴버필드 구성
클래스 명 : BitArray
1) 저장소 : 배열 ==> - base : Object[]
2) max : 최대 크기 ==> - max : int
3) size : 저장개수, 저장위치 ==> - size: int
2단계 : 생성자 정의[맴버 필드의 초기화]
1) max 값 초기화 [매개변수 전달]
2) size <- 0;
3) 배열을 max값 크기에 맞추어 동적 할당
3단계: insert (저장 기능)
public void insert(Object obj){ .... }
1) isOverflow 메소드 생성 (리턴값: boolean)
- 저장 공간이 다 찬 상태인가 확인
2) base[size] = obj;
3) size++;
3단계: delete (삭제 기능)
public void delete(int idx){ .... }
1) isUseIdx 메소드 생성 (매개변수: int idx, 리턴값: boolean)
- 유효한 인덱스인가? (0 ~ size-1)
2) 반복문을 활용해서 이동
for(int i = idx; i < size-1; i++){
base[size] = size+1;
}
3) 사이즈 감소
4단계 : select (검색 기능)
1) 순차 검색 : 시작 -> 끝 순차적으로 -> 오늘 구현 내용
for(int i = 0; i < size; i++){ .... }
2) 이분법적 검색 : 정렬을 전제로 한다.
- 순회
- 구간[시작점, 끝점]
※ 싱글톤 패턴
객체를 하나만 생성할 수 있는 클래스를 만들고 싶다.
1. 생성자가 외부로 노출되면 안됨.
2. 해당 클래스에서 내부적으로 객체를 만든다
멤버 필드로 객체를 선언하고 생성(static)
3. 객체를 외부에 노출시킬 static 메소드 제공
[싱글톤 템플릿]
// 싱글톤 패턴 코드
// =====================================================================
private Manager() {
arr = new BitArray(inputMax());
}
private static Manager Singleton = new Manager();
public static Manager getInstance() {
return Singleton;
}
// 싱글톤 패턴 코드
// =====================================================================
'비트교육센터[전문가반]' 카테고리의 다른 글
이클립스 Git 연동, Commut&Push, Pull 하는 방법 (0) | 2021.03.08 |
---|---|
선형자료구조 _ 연결리스트(단일, 이중, 환형) (0) | 2021.02.16 |
테트리스 (2인용) (0) | 2021.02.15 |
Comparable<T> 인터페이스 (0) | 2021.02.05 |
compareTo(), equal() 메서드 (0) | 2021.02.05 |