https://github.com/sampoder/ib.js
🗺 IB Computer Science data structures in JavaScript!
https://github.com/sampoder/ib.js
Last synced: 7 months ago
JSON representation
🗺 IB Computer Science data structures in JavaScript!
- Host: GitHub
- URL: https://github.com/sampoder/ib.js
- Owner: sampoder
- Created: 2021-11-08T11:42:19.000Z (about 4 years ago)
- Default Branch: main
- Last Pushed: 2021-11-08T13:06:44.000Z (about 4 years ago)
- Last Synced: 2025-05-20T12:31:09.403Z (9 months ago)
- Language: JavaScript
- Homepage:
- Size: 3.91 KB
- Stars: 18
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# `ib.js`
This JS library implements the data structures outlined in the [IB Computer Science Pseudocode Guide](https://computersciencewiki.org/images/c/c6/IB-Pseudocode-rules.pdf) exactly as they are. Use it to experiment with the data structures or what ever you would like to do when studying CS!
## Installation
The package is available as `@sampoder/ib.js` on [NPM](https://www.npmjs.com/package/@sampoder/ib.js) which after installation can be used like:
```js
const { Stack, Collection, Queue } = require('@sampoder/ib.js')
```
You can also import it directly from Skypack through URL imports:
```js
import { Stack, Collection, Queue } from 'https://cdn.skypack.dev/@sampoder/ib.js';
```
Make sure your script has the property `type="module"` set.
## Collections
The `Collection()` class has the following methods:
| Method | Description |
| ----------- | ----------- |
| addItem(x) | Add item to collection |
| getNext() | Get the next item in the collection |
| resetNext() | Go back to the start of the collection |
| hasNext() | Test if the next item exists |
| isEmpty() | Test if a collection is empty |
## Stacks
The `Stack()` class has the following methods:
| Method | Description |
| ----------- | ----------- |
| push() | Push an item onto the top of the stack |
| pop() | Removes and returns the item on the top of the stack |
| isEmpty() | Test if a stack is empty |
## Queues
The `Queue()` class has the following methods:
| Method | Description |
| ----------- | ----------- |
| enqueue() | Adds an item to the back of the queue |
| dequeue() | Returns and removes the first item in the queue |
| isEmpty() | Test if a queue is empty |
> Note: these are all minor adaptations of preexisting JS functionality but I found it helpful to have it presented in this way to understand what the course meant.
## Sample Code
Here is some messy sample code to help you get an idea of how the library works.
```js
const { Stack, Collection, Queue } = require('@sampoder/ib.js')
let s = new Stack()
console.log(s.push("hi"))
console.log(s.push("sam"))
console.log(s.pop())
console.log(s.isEmpty())
let q = new Queue()
q.enqueue(2)
q.enqueue(1)
console.log(q.dequeue())
let c = new Collection()
c.addItem("sam")
c.addItem("p")
c.addItem("2")
c.addItem("3")
c.addItem("4")
while(c.hasNext()){
console.log(c.getNext())
}
c.resetNext()
console.log(c.getNext())
```