func (ll *LinkedList[T]) Push(data T) Node[T] {
	n := &node[T]{
		data:   data,
		parent: ll,
	}
	if ll.length == 0 {
		ll.length = 1
		ll.head = n
		ll.tail = n
		return n
	}
	prevItem := ll.tail
	n.prev = prevItem
	prevItem.next = n
	ll.tail = n
	ll.length++
	return n
}
// Push adds an item to the end of the list.
Push adds an item to the end of the list.
// Push adds an item to the end of the list .
func (ll *LinkedList[T]) Push(data T) Node[T] {
	n := &node[T]{
		data:   data,
		parent: ll,
	}
	if ll.length == 0 {
		ll.length = 1
		ll.head = n
		ll.tail = n
		return n
	}
	prevItem := ll.tail
	n.prev = prevItem
	prevItem.next = n
	ll.tail = n
	ll.length++
	return n
}
func ( ll * LinkedList [ T ] ) Push ( data T ) Node [ T ] { n := & node [ T ] { data : data , parent : ll , } if ll . length == 0 { ll . length = 1 ll . head = n ll . tail = n return n } prevItem := ll . tail n . prev = prevItem prevItem . next = n ll . tail = n ll . length ++ return n }
Push adds an item to the end of the list.
Push adds an item to the end of the list .