Computer-science_A-level_Cie
-
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 主题
adt-from-adt
ADT from ADT
What does it mean?
-
You should be able to explain or demonstrate how you can build one abstract data type on top of another
-
For example:
-
A stack can be implemented using a linked list
-
A queue can be implemented using two stacks
-
A dictionary can be implemented using a binary search tree
-
-
You’re not just limited to built-in types like arrays, you can compose ADTs out of each other
What is an ADT?
-
If you are unsure what an ADT is, read our ADT overview page
How are ADTs implemented?
Using built-in types (e.g. arrays, lists)
|
ADT |
Built-in type used |
Example |
|---|---|---|
|
Stack |
List/array |
Use |
|
Queue |
List/array or circular buffer |
Use |
|
Linked list |
Class with |
Implement nodes manually |
|
Dictionary |
Hash table (built-in |
Key-value mapping |
|
Binary tree |
Class with |
Each node links to children |
Using other ADTs
|
ADT being built |
Uses this ADT |
Example |
|---|---|---|
|
Queue |
Two stacks |
Enqueue in one stack, dequeue using a second stack |
|
Stack |
Linked list |
Push/pop from head of list |
|
Binary tree |
Linked list or array |
Nodes link to each other like a graph |
|
Dictionary |
Binary search tree |
Store keys and values in BST for ordered lookup |
Example: Implementing a Queue using Two Stacks
Idea:
-
Use two stacks (let’s say
inStackandoutStack) to simulate a queue
How it works:
-
enqueue(x)→ pushxontoinStack -
dequeue()→ ifoutStackis empty, pop all items frominStackand push ontooutStack, then pop fromoutStack -
This simulates FIFO behaviour using LIFO operations from stacks
Responses