
많은 수의 데이터를 다룰 때 사용하는 자료구조1:1 대응 하도록 구성연속적으로 저장배열의 장점은 인덱스를 이용하여 데이터에 빠르게 접근이 가능합니다.
배열의 단점은
크기가 고정이 되어있다는 점입니다.
배열의크기가 변경되거나데이터 삭제시 번거롭습니다.
배열의
초기화,삽입,제거를 해보겠습니다
class MyArray{
int[] arr;
// 배열의 초기 사이즈 설정 -> MyArray(int size)
MyArray(int size){
this.arr = new int[size];
}
// 배열의 데이터 삽입 -> public void insertData(int index, int data)
public void insertData(int index, int data){
if(index < 0 || index > this.arr.length){
System.out.println("Index Error");
return;
}
int[] arrDup = this.arr.clone();
this.arr = new int[this.arr.length + 1];
for(int i = 0; i < index; i++){
this.arr[i] = arrDup[i - 1];
}
for(int i = index + 1; i < this.arr.length; i++){
this.arr[i] = arrDup[i - 1];
}
this.arr[index] = data;
}
// 배열에서 특정 데이터 삭제 -> public void removeData(int data)
public void removeData(int data){
int targetIndex = -1;
for(int i = 0; i < this.arr.length; i++){
if(this.arr[i] == data){
targetIndex = i;
break;
}
}
if(targetIndex == -1){
System.out.println("해당 데이터가 배열에 존재하지 않습니다.");
}else{
int[]arrDup = this.arr.clone();
this.arr = new int[this.arr.length - 1];
for(int i = 0; i < targetIndex; i++)
this.arr[i] = arrDup[i];
for(int i = targetIndex; i < this.arr.length; i++){
this.arr[i] = arrDup[i + 1];
}
}
}
}
// 배열의 초기 사이즈 설정 -> MyArray(int size)
// 배열의 데이터 삽입 -> public void insertData(int index, int data)
// 배열에서 특정 데이터 삭제 -> public void removeData(int data)
링크로 연결해서 관리하는 자료구조연속성이 보장되지 않습니다.추가/삭제가 용이함니다.데이터 공간이 필요합니다.노드는 연결리스트의 기본 데이터
저장 단위입니다.
노드는값과포인터로 구성이 됩니다.
연결 정보를 갖습니다.head라고 부릅니다.tail이라고 합니다.