Esiste una classe LinkedList con funzioni come add_first (), add_last (), add_after (), remove_first (), remove_last () e remove ()
Ora c'è una classe Stack che fornisce funzionalità come push (), pop (), peek () o top (), e per implementare questi metodi estende i metodi della classe LinkedList. Si tratta di una violazione del principio di sostituzione di Liskov?
Ad esempio, considera il caso add_after () per aggiungere un nodo all'ennesimo posto di un elenco collegato. Questo può essere fatto nella classe base ma non nella classe Stack. Le post-condizioni sono indebolite qui o modifichi il metodo add_after () per aggiungerlo all'inizio dello stack?
Inoltre, se non è una violazione, è questo cattivo design? E come implementeresti la funzionalità Stack usando la classe LinkedList?