Class: DSA::Deque

Inherits:
Object
  • Object
show all
Includes:
Enumerable
Defined in:
lib/dsa-ruby/deque.rb

Instance Method Summary collapse

Constructor Details

#initializeDeque

Returns a new instance of Deque.



3
4
5
6
# File 'lib/dsa-ruby/deque.rb', line 3

def initialize
  @deque = []
  @head = 0
end

Instance Method Details

#backObject

Raises:

  • (IndexError)


33
34
35
36
# File 'lib/dsa-ruby/deque.rb', line 33

def back
  raise IndexError, "deque is empty" if empty?
  @deque.last
end

#each(&block) ⇒ Object



52
53
54
55
# File 'lib/dsa-ruby/deque.rb', line 52

def each(&block)
  return enum_for(:each) unless block_given?
  @deque.each(&block)
end

#empty?Boolean

Returns:

  • (Boolean)


42
43
44
# File 'lib/dsa-ruby/deque.rb', line 42

def empty?
  @deque.empty?
end

#frontObject

Raises:

  • (IndexError)


28
29
30
31
# File 'lib/dsa-ruby/deque.rb', line 28

def front
  raise IndexError, "deque is empty" if empty?
  @deque.first
end

#pop_backObject

Raises:

  • (IndexError)


23
24
25
26
# File 'lib/dsa-ruby/deque.rb', line 23

def pop_back
  raise IndexError, "deque is empty" if empty?
  @deque.pop
end

#pop_frontObject

Raises:

  • (IndexError)


18
19
20
21
# File 'lib/dsa-ruby/deque.rb', line 18

def pop_front
  raise IndexError, "deque is empty" if empty?
  @deque.shift
end

#push_back(val) ⇒ Object



13
14
15
16
# File 'lib/dsa-ruby/deque.rb', line 13

def push_back(val)
  @deque.push(val)
  self
end

#push_front(val) ⇒ Object



8
9
10
11
# File 'lib/dsa-ruby/deque.rb', line 8

def push_front(val)
  @deque.unshift(val)
  self
end

#sizeObject



38
39
40
# File 'lib/dsa-ruby/deque.rb', line 38

def size
  @deque.size
end

#to_aObject



46
47
48
# File 'lib/dsa-ruby/deque.rb', line 46

def to_a
  @deque.dup
end