나의 기록, 현진록

[Swift] Data Structure Linear Deque 자료구조 선형 덱 본문

Programming/Algorithm & Data Structure

[Swift] Data Structure Linear Deque 자료구조 선형 덱

guswlsdk 2021. 6. 24. 22:26
반응형

 

 

dbguswls030/Argorithm

Contribute to dbguswls030/Argorithm development by creating an account on GitHub.

github.com


덱의 예

덱은 큐를 응용하여 만들어진 것으로 전단(front)과 후단(rear)에서 모두 삽입, 삭제가 가능한 큐를 의미한다.


구현에 필요한 요소

init() : 덱을 초기화 함

add_front(e) : 주어진 요소 e를 덱의 맨 앞에 추가한다.

delete_front() : 전단 요소를 삭제하고 반환한다.

add_rear(e) : 주어진 요소 e를 덱의 맨 뒤에 추가한다.

delete_rear() : 전단 요소를 삭제하지 않고 반환한다.

get_front() : 전단 욯소를 삭제하지 않고 반환한다.

get_rear() : 후단 요소를 삭제하지 않고 반환한다.

is_empty() : 공백 상태이면 True를 아니면 False 반환

is_full() : 덱이 가득 차 있으면 True를 아니면 False를 반환

size() : 덱의 모든 요소들의 개수를 반환


 

import Foundation


func initDeque(){
    linearDeque.removeAll()
}
func addFront(_ x: Int){
    if isFull()==false{
        linearDeque.insert(x, at: 0)
    }
}
func addRear(_ x: Int){
    if isFull() == false{
        linearDeque.append(x)
    }
    
}
func getFront() -> Int{
    if isEmpty() == false{
        return linearDeque[0]
    }else {
        return -1
    }
}
func getRear() -> Int{
    if isEmpty() == false{
        return linearDeque[linearDeque.count-1]
    }else{
        return -1
    }
}
func deleteFront() -> Int{
    if isEmpty() == false{
        return linearDeque.removeFirst()
    }
    else{
        return -1
    }
}
func deleteRear()->Int{
    if isEmpty() == false{
        return linearDeque.removeLast()
    }else{
        return -1
    }
}
func isEmpty() -> Bool{
    if linearDeque.isEmpty{
        print("deque is empty")
        return true
    }else{
        return false
    }
}
func isFull() -> Bool{
    if linearDeque.count == MAX_DEQUE_SIZE{
        print("deque is full")
        return true
    }else{
        return false
    }
}
func size() -> Int{
    return linearDeque.count
}

let MAX_DEQUE_SIZE = 10
var linearDeque:Array<Int> = []


addFront(1)
print(linearDeque)
addRear(9)
print(linearDeque)
addFront(2)
print(linearDeque)
addRear(10)
print(linearDeque)

print(deleteRear())
print(linearDeque)
print(deleteRear())
print(linearDeque)
print(deleteFront())
print(linearDeque)

반응형