Prośba o wyjaśnienie jak napisać listę dwukierunkową

0

Cześć, potrzebuje pomocy w zadaniu: Implementacja listy dwukierunkowej oraz Implementacja listy dwukierunkowej wraz z funkcja usuwania dowolnej pozycji. Niby zadanie proste, jednak jest haczyk. Nie można użyć żadnych gotowych funkcji. Cała lista ma być zapisana za pomocą for/while/if itd. Nie wiem jak to zrobić, w internecie nic na ten temat nie widzę, wszędzie używane są gotowe funkcje. Nie proszę o gotowy kod (chyba, że ktoś ma to jak najbardziej), ale nawet samo wyjaśnienie/zarysowanie/wytłumaczenie jak to ma wyglądać bardzo by pomogło.

Jeśli będzie trzeba to zapłacę ;)

0

Co znaczy nie używać gotowych funkcji? Co było na wykładach? Pokaż notatki to ci powiemy, z czego masz skorzystać? Wiesz w ogóle co to jest lista jednokierunkowa i czym się charakteryzuje?

1

Ale nie potrzebujesz żadnych gotowych funkcji żeby napisać listę dwukierunkową, potrzebujesz tylko jakiejś struktury (tablicy albo klasy) żeby trzymać wartość, poprzedni i następny element.

Jakoś tak:

class Node:
  def __init__(self, value, previous, next):
    self.value = value
    self.previous = previous
    self.next = next

class List:
  def __init__(self):
    self.root = None

  def add(value):
    if self.root == None: # jeśli korzeń jest pusty, i.e. nie ma żadnego elementu w liście
      self.root = Node(value, None, None)  # ustaw korzeń na pierwszy element
    else:
      # tutaj przeiteruj po roocie i dodaj wartość do kolejnego

  def get(index):
    if index == 0:
      if self.root != None:
        return self.root.value
      else:
        raise Exception("no such element")
1

Finalnie i tak rozwiązywanie realnych problemów sprowadzi się do:

from collections import deque
0
S4t napisał(a):

Co znaczy nie używać gotowych funkcji? Co było na wykładach? Pokaż notatki to ci powiemy, z czego masz skorzystać? Wiesz w ogóle co to jest lista jednokierunkowa i czym się charakteryzuje?

To ma być lista dwukierunkowa, wiem co to jest. Bez gotowych funkcji czyli tylko za pomocą pętli for

Riddle napisał(a):

Ale nie potrzebujesz żadnych gotowych funkcji żeby napisać listę dwukierunkową, potrzebujesz tylko jakiejś struktury (tablicy albo klasy) żeby trzymać wartość, poprzedni i następny element.

Tak, w taki sposób jest to chyba dobrze rozwiązane, wiesz jak zrobić to kolejne zadanie? Czyli usuwanie dowolnej pozycji z tej listy dwukierunkowej?

2
ignacy_pomocy napisał(a):
Riddle napisał(a):

Ale nie potrzebujesz żadnych gotowych funkcji żeby napisać listę dwukierunkową, potrzebujesz tylko jakiejś struktury (tablicy albo klasy) żeby trzymać wartość, poprzedni i następny element.

Tak, w taki sposób jest to chyba dobrze rozwiązane, wiesz jak zrobić to kolejne zadanie? Czyli usuwanie dowolnej pozycji z tej listy dwukierunkowej?

No ale to już zadanie dla Ciebie. Dostałeś szablon z dodawaniem pierwszego elementu - mój kod specjalnie nie działa dla kolejnych elementów - to zadanie dla Ciebie żeby to dopisać.

1 użytkowników online, w tym zalogowanych: 0, gości: 1