Skip to content

Instantly share code, notes, and snippets.

@gunnarig
Created September 16, 2019 16:56
Show Gist options
  • Save gunnarig/be8ae0ed3bc23c8e184ca614420a67cf to your computer and use it in GitHub Desktop.
Save gunnarig/be8ae0ed3bc23c8e184ca614420a67cf to your computer and use it in GitHub Desktop.
class ArrayDeque():
def __init__(self):
self.size = 0
self.capacity = 4
self.arr = [None] * capacity
def push_back(self,value):
try:
self.arr[size] = self.arr[value]
self.size+1
except IndexError:
self.resize(self,value)
return self.push_back(self,value)
def resize(self,value = None):
new_arr = (self.capacity*2)*[None]
self.capacity = (self.capacity + self.capacity)
for i in range(0,self.size):
new_arr[i] = self.arr[i]
self.arr = new_arr
def push_front(self,value):
is_full = self.full_empty(self)
if not is_full:
self.frontloop()
self.arr[0] = value
self.size += +1
else:
self.resize(self)
return self.push_front(self,value)
def frontloop(self,remove = False):
i = 0
if not remove:
while i !=self.size or i == self.size:
self.arr[i] = self.arr[i+1]
i += 1
else:
i = self.size-1
while i != 0 or i <= 0:
self.arr[i+1] = self.arr[i]
i += 1
def full_empty(self):
if self.size+1 == self.capacity:
return True
elif self.size == 0:
return True
else:
return False
def pop_back(self):
empty = self.full_empty()
if not empty:
target = self.arr[self.size-1]
self.arr[self.size-1] = None
self.size += -1
return target
else:
return
def pop_front(self):
empty = self.full_empty()
if not empty:
target = self.arr[0]
self.frontloop(True)
self.arr[self.size-1] = None
self.size += -1
return target
else:
return
def get_size(self):
return self.size
def __str__(self):
print_str = ""
for i in range(0,self.size):
target_str = str(self.arr[i])
print_str = print_str + target_str
return print_str
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment