Sha256: 0c47ec960939dc23f42eabaa87135182f12462bdfa0445d861237be3beca1cb6

Contents?: true

Size: 966 Bytes

Versions: 32

Compression:

Stored size: 966 Bytes

Contents

class ListNode {
    has $.next     is rw;
    has $.previous is rw;
    has $.value;
}

class LinkedList is export {
    has $!first;
    has $!last;

    method push($value) {
        my $next = ListNode.new( value => $value, previous => $!last );
        if ( $!last ) {
            $!last = $!last.next= $next ;
        }
        else {
            $!first = $!last = $next;
        }
    }

    method unshift($value) {
        my $next = ListNode.new( value => $value, next => $!first );
        if ( $!first ) {
            $!first = $!first.previous = $next ;
        }
        else {
            $!first = $!last = $next;
        }
    }

    method shift() {
        my $f = $!first;

        $!first = $!first.next;

        unless $!first  { $!last = $!first }

        return $f.value;
    }

    method pop() {
        my $f = $!last;

        $!last = $!last.previous;

        unless $!.last  { $!first = $!last }

        return $f.value;
    }
};

Version data entries

32 entries across 32 versions & 1 rubygems

Version Path
trackler-2.0.8.20 tracks/perl6/exercises/linked-list/Example.pm6
trackler-2.0.8.19 tracks/perl6/exercises/linked-list/Example.pm6
trackler-2.0.8.18 tracks/perl6/exercises/linked-list/Example.pm6
trackler-2.0.8.17 tracks/perl6/exercises/linked-list/Example.pm6
trackler-2.0.8.16 tracks/perl6/exercises/linked-list/Example.pm6
trackler-2.0.8.15 tracks/perl6/exercises/linked-list/Example.pm6
trackler-2.0.8.14 tracks/perl6/exercises/linked-list/Example.pm6
trackler-2.0.8.13 tracks/perl6/exercises/linked-list/Example.pm6
trackler-2.0.8.12 tracks/perl6/exercises/linked-list/Example.pm6
trackler-2.0.8.11 tracks/perl6/exercises/linked-list/Example.pm6
trackler-2.0.8.10 tracks/perl6/exercises/linked-list/Example.pm6
trackler-2.0.8.9 tracks/perl6/exercises/linked-list/Example.pm6
trackler-2.0.8.8 tracks/perl6/exercises/linked-list/Example.pm6
trackler-2.0.8.7 tracks/perl6/exercises/linked-list/Example.pm6
trackler-2.0.8.6 tracks/perl6/exercises/linked-list/Example.pm6
trackler-2.0.8.5 tracks/perl6/exercises/linked-list/Example.pm6
trackler-2.0.8.4 tracks/perl6/exercises/linked-list/Example.pm6
trackler-2.0.8.3 tracks/perl6/exercises/linked-list/Example.pm6
trackler-2.0.8.2 tracks/perl6/exercises/linked-list/Example.pm6
trackler-2.0.8.1 tracks/perl6/exercises/linked-list/Example.pm6