def draw(): [l, s, as1, e1, a13, a31, e3, a34, a43, e4, a4e, e] = create_doubly_linked_list([1, None, 3, 4]) ca21 = Cross(a13, color=RED) ca12 = Cross(a31, color=RED) e2 = DoublyLinkedList((e3.x - 70, e3.y + 40), 2, color=RED) a12 = Arrow(e1.prox_3, e2.start_0, color=RED) a21 = Arrow(e2.ant_2, e1.d_3, color=RED) a23 = Arrow(e2.prox_2, e3.d_1, color=RED) a32 = Arrow(e3.ant_3, e2.u_4, color=RED) circ = Circle((e.x + 40, e.y), "2", color=BLUE) p1 = Pointer(e1, "p", direction="u.u_2", color=RED) p3 = Pointer(e3, "p", direction="u.u_2", color=RED) cp1 = Cross(p1.label, color=RED) return [l, s, as1, e1, a13, a31, e3, a34, a43, e4, a4e, e, circ, ca21, ca12, e2, a12, a21, a23, a32, p1, p3, cp1]
def remove(): [ l, s, as3, e3, a31, a13, e1, a12, a21, e2, a2e, e ] = create_doubly_linked_list([3, 1, 2], color=RED, y=220) ca31 = Cross(a31, color=BLUE) ca21 = Cross(a21, color=BLUE) desloc = lambda p, d: (p[0], p[1] + d) sa32 = SubArrow(desloc(e3.prox_1, - 3), desloc(e2.start_1, - 3), size_y=-15, color=BLUE) sa23 = SubArrow(desloc(e2.ant_3, 3), desloc(e3.end_3, 3), size_y=15, color=BLUE, reverse=True) c1 = Cross(e1.middle, color=BLUE, size=20) return [ l, s, as3, e3, a31, a13, e1, a12, a21, e2, a2e, e, ca31, ca21, sa32, sa23, c1 ]
def search(): [ l, s, as3, e3, a31, a13, e1, a12, a21, e2, a2e, e ] = create_doubly_linked_list([3, 1, 2]) circ = Circle((e.x + 40, e.y), "1", color=BLUE) p = Pointer(e1, 'p = busca(l, 1)', direction='u.u_2', color=RED) label1 = Label((e1.mx + 19, e1.my+25), "p->ant->prox = p->prox;", color=RED) label2 = Label((e1.mx + 15, e1.my+40), "p->prox->ant = p->ant;", color=RED) ca31 = Circle(a31, "", color=RED, radius=10) ca21 = Circle(a21, "", color=RED, radius=10) return [ l, s, as3, e3, a31, a13, e1, a12, a21, e2, a2e, e, p, circ, ca31, ca21, label1, label2 ]
def draw(): [ l, s, as3, e3, a31, a13, e1, a12, a21, e2, a2e, e ] = create_doubly_linked_list([3, 1, 2]) circ = Circle((e.x + 40, e.y), "3", color=BLUE) l1 = Pointer(e1, 'l', direction='ul.u_0', color=RED) cl = Cross(l.label, color=RED) ca13 = Cross(a13, color=RED) n = Null((a13.mx + 6, a13.my - 10), color=RED) desloc = lambda p, d: (p[0], p[1] + d) d = Line(desloc(e1.ant_3, 4), n.middle, color=RED) c3 = Cross(e3.middle, color=RED, size=20) return [ l, s, as3, e3, a31, a13, e1, a12, a21, e2, a2e, e, circ, l1, cl, ca13, n, d, c3 ]
def draw(): [ l, s, as3, e3, a31, a13, e1, a12, a21, e2, a2e, e ] = create_doubly_linked_list([3, 1, 2]) circ = Circle((e.x + 40, e.y), "2", color=BLUE) ca12 = Cross(a12, color=RED) n = Null((a12.mx + 15, a12.my - 40), color=RED) desloc = lambda p, d: (p[0], p[1] + d) p = (a12.mx - 3, a12.my - 26) d1 = Line(p, n.middle, color=RED) d2 = Line(desloc(e1.prox_1, - 4), p, color=RED) c2 = Cross(e2.middle, color=RED, size=20) return [ l, s, as3, e3, a31, a13, e1, a12, a21, e2, a2e, e, circ, ca12, n, d1, d2, c2 ]
def three_elements(): return create_doubly_linked_list([2, 1, 3], y=300)
def two_elements(): return create_doubly_linked_list([2, 1], y=200)
def one_element(): return create_doubly_linked_list([1], x=100)
def empty(): return create_doubly_linked_list([])