donchanee

[데크 큐] 삽입과 삭제 출력 본문

프로그래밍/자료구조

[데크 큐] 삽입과 삭제 출력

donchanee 2019. 12. 24. 10:20
728x90

[ 데크 큐의 구조 ]

 

데크는 위 그림처럼 양쪽에서 모두 삽입과 삭제가 가능한 자료구조이다. 이를 구현한 간단한 삽입 삭제 문제와 코드이다.

 

물론 예외사항이 있기에 코드 안에서 처리해주었다.

 

< 문제 설명 >

 

int main(){
    int calculateSize, value;
    char calculate[5];
    dequeNumber = 0;
    
    scanf("%d", &calculateSize);
    getchar();
    
    for (int i = 0; i < calculateSize; i++){
        scanf("%s", calculate);
        getchar();
        if (strcmp(calculate, "AF") == 0){
            scanf("%d", &value);
            getchar();
            if (dequeNumber == 0){
                deque = (struct node*)malloc(sizeof(struct node));
                deque->element = value;
                deque->next = NULL;
                deque->prev = NULL;
                front = deque;
                rear = deque;
                dequeNumber++;
            }
            else{
                add_front(value);
                dequeNumber++;
            }
        }
        else if (strcmp(calculate, "AR") == 0){
            scanf("%d", &value);
            getchar();
            
            if (dequeNumber == 0) {
                deque = (struct node*)malloc(sizeof(struct node));
                deque->element = value;
                deque->next = NULL;
                deque->prev = NULL;
                front = deque;
                rear = deque;
                dequeNumber++;
            }
            else {
                add_rear(value);
                dequeNumber++;
            }
        }
        else if (strcmp(calculate, "DF") == 0){
            delete_front();
            dequeNumber--;
        }
        
        else if (strcmp(calculate, "DR") == 0){
            delete_rear();
            dequeNumber--;
        }
        
        else if (strcmp(calculate, "P") == 0){
            print();
        }
    }
    freeDeque();
}