SultanC
  1. Home
  2. Examples
  3. Collections

A double-ended queue

push and pop at both ends.

collections/deque.sn
// A double-ended queue: push and pop at both ends.
import std.io.println;
import std.text.number;
import std.collections.deque;

def main(): int {
    let line: mutable deque<int> = new_deque();
    deque_push_back(&mutable line, 2);
    deque_push_back(&mutable line, 3);
    deque_push_front(&mutable line, 1);
    deque_push_back(&mutable line, 4);
    println(uint_to_text(deque_length(&line)));
    match deque_pop_front(&mutable line) with
    | option.some(value) -> { println(int_to_text(value)); }
    | option.none -> { };
    match deque_pop_back(&mutable line) with
    | option.some(value) -> { println(int_to_text(value)); }
    | option.none -> { };
    println(uint_to_text(deque_length(&line)));
    return 0;
}

Run it

With the interpreter, without compiling:

./build/sultanc run examples/en/collections/deque.sn

Or compile it to an executable:

./build/sultanc examples/en/collections/deque.sn -o build/example && ./build/example

Source on GitHub   All examples