Back to 课程
Computer-science_A-level_Cie
0% Complete
0/0 Steps
-
computers-and-components6 主题
-
logic-gates-and-logic-circuits2 主题
-
central-processing-unit-cpu-architecture6 主题
-
assembly-language-4 主题
-
bit-manipulation1 主题
-
operating-systems3 主题
-
language-translators2 主题
-
data-security3 主题
-
data-integrity1 主题
-
ethics-and-ownership3 主题
-
database-concepts3 主题
-
database-management-systems-dbms-1 主题
-
data-definition-language-ddl-and-data-manipulation-language-dml1 主题
-
computational-thinking-skills1 主题
-
algorithms14 主题
-
data-types-and-records2 主题
-
arrays2 主题
-
files1 主题
-
introduction-to-abstract-data-types-adt1 主题
-
programming-basics1 主题
-
constructs2 主题
-
structured-programming1 主题
-
program-development-life-cycle2 主题
-
program-design-2 主题
-
program-testing-and-maintenance3 主题
-
user-defined-data-types1 主题
-
file-organisation-and-access-3 主题
-
floating-point-numbers-representation-and-manipulation3 主题
-
protocols2 主题
-
circuit-switching-packet-switching1 主题
-
processors-parallel-processing-and-virtual-machines5 主题
-
boolean-algebra-and-logic-circuits4 主题
-
purposes-of-an-operating-system-os3 主题
-
translation-software3 主题
-
encryption-encryption-protocols-and-digital-certificates3 主题
-
artificial-intelligence-ai4 主题
-
recursion1 主题
-
programming-paradigms4 主题
-
object-oriented-programming7 主题
-
file-processing-and-exception-handling2 主题
-
data-representation5 主题
-
multimedia3 主题
-
compression2 主题
-
networks-and-the-internet11 主题
课 Progress
0% Complete
Implementing a queue
How do you program a queue?
-
A queue is a linear ADT that follows the First In, First Out (FIFO) principle:
-
Enqueue: Add item to the back
-
Dequeue: Remove item from the front
-
Peek/front: Look at the front item without removing
-
isEmpty / isFull: Check queue status
-
-
Assuming a record-based circular queue implementation:
Enqueue
PROCEDURE enqueue(q : REF Queue, item : STRING) IF NOT isFull(q) THEN q.rear ← (q.rear + 1) MOD q.capacity q.items[q.rear] ← item q.size ← q.size + 1 ELSE OUTPUT "Queue is full" ENDIF
ENDPROCEDURE
Dequeue
FUNCTION dequeue(q : REF Queue) RETURNS STRING IF NOT isEmpty(q) THEN DECLARE value : STRING value ← q.items[q.front] q.front ← (q.front + 1) MOD q.capacity q.size ← q.size - 1 RETURN value ELSE RETURN "Queue is empty" ENDIF
ENDFUNCTION
isEmpty / isFull
FUNCTION isEmpty(q : Queue) RETURNS BOOLEAN RETURN q.size = 0
ENDFUNCTION FUNCTION isFull(q : Queue) RETURNS BOOLEAN RETURN q.size = q.capacity
ENDFUNCTION
Find (linear search)
FUNCTION find(q : Queue, target : STRING) RETURNS BOOLEAN DECLARE i : INTEGER DECLARE pos : INTEGER pos ← q.front FOR i ← 1 TO q.size IF q.items[pos] = target THEN RETURN TRUE ENDIF pos ← (pos + 1) MOD q.capacity NEXT i RETURN FALSE
ENDFUNCTION
Python
from collections import deque class Queue: def __init__(self, capacity): self.items = deque() self.capacity = capacity def isEmpty(self): return len(self.items) == 0 def isFull(self): return len(self.items) == self.capacity def enqueue(self, item): if not self.isFull(): self.items.append(item) else: print("Queue is full") def dequeue(self): if not self.isEmpty(): return self.items.popleft() else: return "Queue is empty" def peek(self): if not self.isEmpty(): return self.items[0] else: return None def find(self, target): return target in self.items # Example usage
q = Queue(5)
q.enqueue("Alice")
q.enqueue("Bob")
q.enqueue("Charlie")
print("Front item:", q.peek())
print("Popped:", q.dequeue())
print("Is 'Bob' in queue?", q.find("Bob"))
Java
import java.util.LinkedList;
import java.util.Queue; public class QueueExample { public static void main(String[] args) { Queue<String> q = new LinkedList<>(); // Enqueue q.offer("Alice"); q.offer("Bob"); q.offer("Charlie"); // Peek System.out.println("Front item: " + q.peek()); // Dequeue System.out.println("Popped: " + q.poll()); // Find System.out.println("Is 'Bob' in queue? " + q.contains("Bob")); }
}
Responses