Skip to content

Instantly share code, notes, and snippets.

@oeileyo
Created April 3, 2020 15:41
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save oeileyo/f145213973fd1cdf8bfec970130340f8 to your computer and use it in GitHub Desktop.
Save oeileyo/f145213973fd1cdf8bfec970130340f8 to your computer and use it in GitHub Desktop.
class Element:
def __init__(self, el=None, nextel=None):
self.el = el
self.next_el = nextel
class ListForward:
def __init__(self):
self.first = None
self.last = None
self.leng = 0
def is_empty(self):
if self.first == None:
return True
else:
return False
def __repr__(self):
lst = []
ell = self.first
lst = [ell.el]
while ell.next_el != None:
ell = ell.next_el
lst.append(ell.el)
return f'List: {lst}'
def add(self, n, where=None):
if type(where) == int:
if 1 <= where < self.leng: # добавление n-ого элемента по номеру
self.leng += 1
current = self.first
for _ in range (1,where):
current = current.next_el
new = Element(n)
new.next_el = current.next_el
current.next_el = new
elif where == 0: # добавление первого элемента по номеру
self.leng += 1
if self.first == None:
self.first = Element(n, None)
self.last = self.first
elif self.last == self.first:
self.first = Element(n, self.last)
else:
new = Element(n, self.first)
self.first = new
elif where == self.leng: #добавление последнего элемента по номеру
self.leng += 1
if self.first == None:
self.first = Element(n, None)
self.last = self.first
elif self.last == self.first:
self.last = Element(n, None)
self.first.next_el = self.last
else:
current = Element(n, None)
self.last.next_el = current
self.last = current
else:
print(f'POSITION IS OUT OF RANGE. (selected position: {where}, length of list: {self.leng})')
elif where == None or where == 'last': # добавление последнего элемента по слову
self.leng += 1
if self.first == None:
self.first = Element(n, None)
self.last = self.first
elif self.last == self.first:
self.last = Element(n, None)
self.first.next_el = self.last
else:
current = Element(n, None)
self.last.next_el = current
self.last = current
elif where == 'first': # добавление первого элемента по слову
self.leng += 1
if self.first == None:
self.first = Element(n, None)
self.last = self.first
elif self.last == self.first:
self.first = Element(n, self.last)
else:
new = Element(n, self.first)
self.first = new
def without_first(self):
self.first = self.first.next_el
def get_first(self):
return self.first.el
def length(self):
return self.leng
def delete_last(self):
current = self.first
for _ in range (1, self.leng-1):
current = current.next_el
current.next_el = None
self.last = current
self.leng -= 1
def get(self, n):
current = self.first
for _ in range (1, n):
current = current.next_el
return f'Chosen element №{n}: {current.el}'
class Element2:
def __init__(self, el=None, previous_el=None, nextel=None):
self.el = el
self.previous_el = previous_el
self.next_el = next_el
class List2:
def __init__(self):
self.first = None
self.last = None
self.leng = 0
def is_empty(self):
if self.leng == 0:
return True
else:
return False
def __repr__(self):
lst = []
ell = self.first
lst = [ell.el]
while ell.next_el != None:
ell = ell.next_el
lst.append(ell.el)
return f'List: {lst}'
def add(self, n, where=None):
if type(where) == int:
if 1 <= where < self.leng: # добавление n-ого элемента по номеру
self.leng += 1
current = self.first
for _ in range (1,where):
current = current.next_el
new = Element(n)
new.previous_el = current.previous_el
new.next_el = current.next_el
current.next_el.previous_el = new
current.next_el = new
elif where == 0: # добавление первого элемента по номеру
self.leng += 1
if self.first == None:
self.first = Element(n, None, None)
self.last = self.first
elif self.last == self.first:
self.first = Element(n, None, self.last)
self.last.previous_el = self.first
else:
new = Element(n, None, self.first)
self.first.previos_el = new
self.first = new
elif where == self.leng: #добавление последнего элемента по номеру
self.leng += 1
if self.first == None:
self.first = Element(n, None, None)
self.last = self.first
elif self.last == self.first:
self.last = Element(n, self.first, None)
self.first.next_el = self.last
else:
new = Element(n, self.last_el, None)
self.last.next_el = new
self.last = new
else:
print(f'POSITION IS OUT OF RANGE. (selected position: {where}, length of list: {self.leng})')
elif where == None or where == 'last': # добавление последнего элемента по слову
self.leng += 1
if self.first == None:
self.first = Element(n, None, None)
self.last = self.first
elif self.last == self.first:
self.last = Element(n, self.first, None)
self.first.next_el = self.last
else:
new = Element(n, self.last_el, None)
self.last.next_el = new
self.last = new
elif where == 'first': # добавление первого элемента по слову
self.leng += 1
if self.first == None:
self.first = Element(n, None, None)
self.last = self.first
elif self.last == self.first:
self.first = Element(n, None, self.last)
self.last.previous_el = self.first
else:
new = Element(n, None, self.first)
self.first.previos_el = new
self.first = new
def without_first(self):
self.first = self.first.next_el
self.first.previous_el = None
def get_first(self):
return self.first.el
def length(self):
return self.leng
def delete_last(self):
current = self.first
for _ in range (1, self.leng-1):
current = current.next_el
current.next_el = None
self.last = current
def get(self, n):
current = self.first
for _ in range (1, n):
current = current.next_el
return f'Chosen element №{n}: {current.el}'
@EvgeniyKireev
Copy link

thank you!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment