ArrayList알고리즘(Python,Java)2018. 9. 10. 06:07
Table of Contents
반응형
package alist.array;import java.util.NoSuchElementException;public class ArrList<E> { // A --> B 로 해도 상관 없다. Element ( 의 E ) , Type ( 의 T ) , Value ( 의 V ) , KeY( 의 K// )private E a[]; // 리스트의 항목들을 저장할 배열private int size; // 리스트의 항목 수public ArrList() { // 생성자a = (E[]) new Object[1]; // 최초로 1개의 원소를 가진 배열 생성size = 0; // 항목 수를 0으로 초기화}public boolean isEmpty() {return size == 0;} // 리스트가 empty이면 true 리턴public void insertLast(E newItem) { // 가장 뒤에 새 항목 삽입if (size == a.length) // 배열에 빈 공간이 없으면resize(2 * a.length); // 배열 크기 2배로 확장 ,a[size++] = newItem; // 새 항목 삽입 , 차곡차곡 쌓아 가겠다.}/************************************************ 새 항목을 k-1번쨰 항목 다음에 삽입**/public void insert(E newItem, int k) {/** 1. 배열에 빈 공간이 없으면 배열 크기 2배로 확장 2. 해당 번째 뒤로 한 칸씩 이동 3. 새 항목 삽입하고 크기를 하나 증가*/if (size == a.length) // 배열에 빈 공간이 없으면resize(2 * a.length); // 배열 크기 2배로 확장 ,for (int i = size; i >= k; i--) {a[i + 1] = a[i];}a[k] = newItem; // 새 항목 삽입 , 차곡차곡 쌓아 가겠다.size++;}/************************************************ k번째 항목 삭제**/public E delete(int k) {if (isEmpty())throw new NoSuchElementException(); // underflow 경우에 프로그램 정지E item = a[k];/** 1. 한 칸씩 앞으로 이동 2. 배열에 항목들이 1/4만 차지한다면 배열을 1/2 크기로 축소*/for (int i = k; i < size; i--) {a[i] = a[i + 1];}if (size == a.length / 4) {resize(a.length / 2);}return item;}public E peek(int k) { // k번째 항목을 리턴, 단순히 읽기만 한다.if (isEmpty())throw new NoSuchElementException(); // underflow 경우에 프로그램 정지return a[k];}private void resize(int newSize) { // 배열 크기 조절Object[] t = new Object[newSize]; // newSize 크기의 새로운 배열 t 생성for (int i = 0; i < size; i++)t[i] = a[i]; // 배열 s를 배열 t로 복사a = (E[]) t; // 배열 t를 배열 s로}public void print() { // 배열의 항목들을 출력if (isEmpty())System.out.print("배열이 비어있음.");elsefor (int i = 0; i < a.length; i++)System.out.print(a[i] + "\t ");System.out.println();}}
반응형
'알고리즘(Python,Java)' 카테고리의 다른 글
백준알고리즘 1001번 (0) | 2019.07.01 |
---|---|
백준알고리즘 1000번 (0) | 2019.07.01 |
ArrayList_Main (0) | 2018.09.10 |
리스트와 배열 (0) | 2018.08.29 |
Factorial(팩토리얼) (0) | 2018.08.29 |
@IT grow. :: IT grow.
#IT #먹방 #전자기기 #일상
#개발 #일상