Sha256: de31f432afc4420c4db59611e16b888458db5ccfb3e864deaddc045218c03e35

Contents?: true

Size: 856 Bytes

Versions: 83

Compression:

Stored size: 856 Bytes

Contents

unit class LinkedList:ver<2>;

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

has $!first;
has $!last;

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

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

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

    $!first = $!first.next;

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

    return $f.value;
}

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

    $!last = $!last.previous;

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

    return $f.value;
}

Version data entries

83 entries across 83 versions & 1 rubygems

Version Path
trackler-2.2.1.159 tracks/perl6/exercises/linked-list/.meta/solutions/LinkedList.pm6
trackler-2.2.1.158 tracks/perl6/exercises/linked-list/.meta/solutions/LinkedList.pm6
trackler-2.2.1.157 tracks/perl6/exercises/linked-list/.meta/solutions/LinkedList.pm6
trackler-2.2.1.156 tracks/perl6/exercises/linked-list/.meta/solutions/LinkedList.pm6
trackler-2.2.1.155 tracks/perl6/exercises/linked-list/.meta/solutions/LinkedList.pm6
trackler-2.2.1.154 tracks/perl6/exercises/linked-list/.meta/solutions/LinkedList.pm6
trackler-2.2.1.153 tracks/perl6/exercises/linked-list/.meta/solutions/LinkedList.pm6
trackler-2.2.1.152 tracks/perl6/exercises/linked-list/.meta/solutions/LinkedList.pm6
trackler-2.2.1.151 tracks/perl6/exercises/linked-list/.meta/solutions/LinkedList.pm6
trackler-2.2.1.150 tracks/perl6/exercises/linked-list/.meta/solutions/LinkedList.pm6
trackler-2.2.1.149 tracks/perl6/exercises/linked-list/.meta/solutions/LinkedList.pm6
trackler-2.2.1.148 tracks/perl6/exercises/linked-list/.meta/solutions/LinkedList.pm6
trackler-2.2.1.147 tracks/perl6/exercises/linked-list/.meta/solutions/LinkedList.pm6
trackler-2.2.1.146 tracks/perl6/exercises/linked-list/.meta/solutions/LinkedList.pm6
trackler-2.2.1.145 tracks/perl6/exercises/linked-list/.meta/solutions/LinkedList.pm6
trackler-2.2.1.144 tracks/perl6/exercises/linked-list/.meta/solutions/LinkedList.pm6
trackler-2.2.1.143 tracks/perl6/exercises/linked-list/.meta/solutions/LinkedList.pm6
trackler-2.2.1.142 tracks/perl6/exercises/linked-list/.meta/solutions/LinkedList.pm6
trackler-2.2.1.141 tracks/perl6/exercises/linked-list/.meta/solutions/LinkedList.pm6
trackler-2.2.1.140 tracks/perl6/exercises/linked-list/.meta/solutions/LinkedList.pm6