キュー&円形キュー
キューとは?
一方の端にデータを配置し、他方の端からデータを移動する線形構造.
一番先に入れたのは一番目です.
入力と削除は異なる場所で行います.
順番に処理する必要がある場合に使用
Qpythonで実施
class Node:
def __init__(self,val,next=None ):
self.val = val
self.next = next
class Queue:
def __init__(self):
self.front = None
def push(self, value):
if not self.front:
self.front = Node(value, None)
return
node = self.front #front가 맨처음 들어온걸 가르킴
while node.next: #삽입시 next를 탐색하여 끝에다 추가
node = node.next
node.next = Node(value, None)
def pop(self):
if not self.front:
return None
node = self.front
self.front = self.front.next
return node.item
def is_empty(self):
return self.front is None
円形Qとは?
線形キュー内の問題点の挿入と削除を繰り返すと、前のインデックスが空であっても満たされているとみなされます.この問題を解決するためには、削除時に後ろの要素を一格に引き出す必要がありますが、円形キューではfrontとhundが挿入削除時に移動し、これらの問題を解決します.
きどうモード
開始前と開始後の同じインデックス
挿入時にhundはデータを移動して挿入します.
削除時にフロントエンドが移動し、データが削除されます.
円形立方体を使用して実装
class Node:
def __init__(self, val):
self.val = val
self.next = None
class Circulrator_Queue:
def __init__(self):
self.front = None
self.rear = None
def isEmpty(self):
if self.front == self.rear:
return True
return False
def enQueue(self, val):
if not self.front:
node = Node(val)
self.front = node
self.rear = node #front와 rear가 같은 노드를 보고있다.
self.rear.next = Node(val) #rear.next에 만들고
self.rear = self.rear.next #rear 옮기고
def deQueue(self):
if self.front == None:
return None
data = self.front.val
self.front = self.front.next #front에 front.next 바꿔주기
if self.front == None:
self.rear = None
return data
return data
画像ソース:https://www.codingem.com/what-is-a-fifo-queue/
https://yjg-lab.tistory.com/115
Reference
この問題について(キュー&円形キュー), 我々は、より多くの情報をここで見つけました
https://velog.io/@hongdol/큐원형큐
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
class Node:
def __init__(self,val,next=None ):
self.val = val
self.next = next
class Queue:
def __init__(self):
self.front = None
def push(self, value):
if not self.front:
self.front = Node(value, None)
return
node = self.front #front가 맨처음 들어온걸 가르킴
while node.next: #삽입시 next를 탐색하여 끝에다 추가
node = node.next
node.next = Node(value, None)
def pop(self):
if not self.front:
return None
node = self.front
self.front = self.front.next
return node.item
def is_empty(self):
return self.front is None
線形キュー内の問題点の挿入と削除を繰り返すと、前のインデックスが空であっても満たされているとみなされます.この問題を解決するためには、削除時に後ろの要素を一格に引き出す必要がありますが、円形キューではfrontとhundが挿入削除時に移動し、これらの問題を解決します.
きどうモード
開始前と開始後の同じインデックス
挿入時にhundはデータを移動して挿入します.
削除時にフロントエンドが移動し、データが削除されます.
円形立方体を使用して実装
class Node:
def __init__(self, val):
self.val = val
self.next = None
class Circulrator_Queue:
def __init__(self):
self.front = None
self.rear = None
def isEmpty(self):
if self.front == self.rear:
return True
return False
def enQueue(self, val):
if not self.front:
node = Node(val)
self.front = node
self.rear = node #front와 rear가 같은 노드를 보고있다.
self.rear.next = Node(val) #rear.next에 만들고
self.rear = self.rear.next #rear 옮기고
def deQueue(self):
if self.front == None:
return None
data = self.front.val
self.front = self.front.next #front에 front.next 바꿔주기
if self.front == None:
self.rear = None
return data
return data
画像ソース:https://www.codingem.com/what-is-a-fifo-queue/https://yjg-lab.tistory.com/115
Reference
この問題について(キュー&円形キュー), 我々は、より多くの情報をここで見つけました https://velog.io/@hongdol/큐원형큐テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol