donaricano-btn

큐(Queue) - 데큐 ArrayList(Double-ended queue (Decue using ArrayList))

- 일반 큐와 달리 데큐는 rear와 front에서 동시에 삽입 삭제가 이루어 질수 있다

- ArrayList를 사용하여 구현


1. ArrayList

1) 추가(add)

1
2
3
4
5
6
List<Integer> list = new ArrayList<>();
//자동으로 배열의 뒤로 추가
list.add(10);
 
//특정 인덱스 위치에 추가
list.add(1,10);
 

2) 삭제(remove)

1
2
//특정 인덱스 삭제
list.remove(0);
 

3) 가져오기(get)

1
2
//특정 인덱스 값 가져오기
list.get(1);
 


2. 구현 - ArrayList

1) 정의

1
2
List<Integer> decue = new ArrayList<>();
    

- ArrayList 특성상 사이즈가 동적으로 증가한다, 그렇기 때문에 사이즈를 처음에 명시 하지 않아도 된다

- ArrayList 만 생성

2) insertFront(), insertRear()

1
2
3
4
5
6
7
8
9
10
11
public void insertFront(int element){
    System.out.println("inserting at front:"+element);
    decue.add(0,element);
    System.out.println(decue);
}
 
public void insertRear(int element){
    System.out.println("inserting at rear:"+element);
    decue.add(element);
    System.out.println(decue);
}
 

3) removeFront(), removeRear()

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public void removeFront(){
    if(decue.isEmpty()){
        System.out.println("queus is empty");
        return;
    }
    System.out.println("removing at front:"+decue.remove(0));
    System.out.println(decue);
}
 
public void removeRear(){
    if(decue.isEmpty()){
        System.out.println("decue is empty");
        return;
    }
    System.out.println("removing at rear:"+decue.remove(decue.size()-1));
    System.out.println(decue);
}
 

4) peekFront(), peekRear()

1
2
3
4
5
6
7
8
9
10
11
12
13
public int peekFront(){
         
    int element = decue.get(0);
    System.out.println("Element is front" + element);
    return element;
}
 
public int peekRear(){
     
    int element = decue.get(decue.size()-1);
    System.out.println("Element is front" + element);
    return element;
}
 

5) main()

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public static void main(String[]args){
         
    DoubleEndedQueue que = new DoubleEndedQueue();
     
    que.insertFront(50);
    que.insertFront(30);
    que.insertRear(10);
    que.insertRear(60);
    que.removeFront();
    que.removeRear();
    que.removeFront();
    que.removeRear();
    que.removeFront();
     
}
 

블로그 이미지

리딩리드

,