Research note

[ 자료구조 ] 큐 (queue)

1. 큐가 꽉 차있는지 확인하는 함수 def is_queue_full(self): if self.size - 1 != self.rear: return False elif self.size -1 == self.rear and self.front == -1: return True else: for i in range(self

Source

이 글은 기존 Tistory 블로그에서 옮겨온 글입니다. 원문: https://jms3084.tistory.com/13

1. 큐가 꽉 차있는지 확인하는 함수 

def is_queue_full(self):
        if self.size - 1 != self.rear:
            return False
    elif self.size -1 == self.rear and self.front == -1:
        return True
    else:
        for i in range(self.front + 1, self.size):
            self.queue[i - 1] = self.queue[i]
            self.queue[i] = None
        self.front -= 1
        self.rear -= 1
        return False

2. 큐가 비었는지 확인하는 함수

def is_queue_empty(self):
        if self.front == self.rear:
            return True
        else:
            return False

3. 큐에 데이터를 삽입하는 enQueue 함수

def en_queue(self, data):
        if (self.is_queue_full()):
            return 
        self.rear += 1
        self.queue[self.rear] = data

4. 큐에서 데이터를 추출하는 deQueue 함수

def de_queue(self):
        if (self.is_queue_empty()):
            return None
        self.front += 1
        data = self.queue[self.front]
        self.queue[self.front] = None
        return data

5. 큐에서 front값을 확인하는 peek 함수

def peek(self):
        if (self.is_queue_empty()):
            return None
        return self.queue[self.front + 1]

6. 실습 과제 2번 - 시간 계산 함수

def calc_time(self):
        sum = 0
        for i in range(self.front + 1, self.rear + 1):
            sum += self.queue[i][1]
        return sum

7. 큐의 원리

  • 큐는 양쪽이 뚫려 있는 구조이다.
  • 큐는 선입선출(FIFO) 구조이다.
  • 한쪽에서는 삽입만, 다른 쪽에서는 추출만 진행된다.
  • 데이터를 삽입할때는 rear + 1 위치에 삽입된다.
  • 데이터를 추출할때는 front + 1위치가 추출된다.

Search titles, venues, and tags.

move · openesc close