Back to 课程

Computer-science_A-level_Cie

0% Complete
0/0 Steps
  1. computers-and-components
    6 主题
  2. logic-gates-and-logic-circuits
    2 主题
  3. central-processing-unit-cpu-architecture
    6 主题
  4. assembly-language-
    4 主题
  5. bit-manipulation
    1 主题
  6. operating-systems
    3 主题
  7. language-translators
    2 主题
  8. data-security
    3 主题
  9. data-integrity
    1 主题
  10. ethics-and-ownership
    3 主题
  11. database-concepts
    3 主题
  12. database-management-systems-dbms-
    1 主题
  13. data-definition-language-ddl-and-data-manipulation-language-dml
    1 主题
  14. computational-thinking-skills
    1 主题
  15. algorithms
    14 主题
  16. data-types-and-records
    2 主题
  17. arrays
    2 主题
  18. files
    1 主题
  19. introduction-to-abstract-data-types-adt
    1 主题
  20. programming-basics
    1 主题
  21. constructs
    2 主题
  22. structured-programming
    1 主题
  23. program-development-life-cycle
    2 主题
  24. program-design-
    2 主题
  25. program-testing-and-maintenance
    3 主题
  26. user-defined-data-types
    1 主题
  27. file-organisation-and-access-
    3 主题
  28. floating-point-numbers-representation-and-manipulation
    3 主题
  29. protocols
    2 主题
  30. circuit-switching-packet-switching
    1 主题
  31. processors-parallel-processing-and-virtual-machines
    5 主题
  32. boolean-algebra-and-logic-circuits
    4 主题
  33. purposes-of-an-operating-system-os
    3 主题
  34. translation-software
    3 主题
  35. encryption-encryption-protocols-and-digital-certificates
    3 主题
  36. artificial-intelligence-ai
    4 主题
  37. recursion
    1 主题
  38. programming-paradigms
    4 主题
  39. object-oriented-programming
    7 主题
  40. file-processing-and-exception-handling
    2 主题
  41. data-representation
    5 主题
  42. multimedia
    3 主题
  43. compression
    2 主题
  44. networks-and-the-internet
    11 主题
课 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
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

您的邮箱地址不会被公开。 必填项已用 * 标注