// 在at元素后面插入e,并且返回e,并更新相应的值 func(l *List) insert(e, at *Element) *Element { e.prev = at e.next = at.next e.prev.next = e e.next.prev = e e.list = l l.len++ return e }
func(l *List) InsertBefore(v any, mark *Element) *Element { if mark.list != l { returnnil } return l.insertValue(v, mark.prev) }
插入一个节点值v在mark节点后面
1 2 3 4 5 6
func(l *List) InsertAfter(v any, mark *Element) *Element { if mark.list != l { returnnil } return l.insertValue(v, mark) }
将链表other中的节点依次插入到链表l的后面
1 2 3 4 5 6
func(l *List) PushBackList(other *List) { l.lazyInit() for i, e := other.Len(), other.Front(); i > 0; i, e = i-1, e.Next() { l.insertValue(e.Value, l.root.prev) } }
将链表other中d节点插入到链表l的前面
1 2 3 4 5 6
func(l *List) PushFrontList(other *List) { l.lazyInit() for i, e := other.Len(), other.Back(); i > 0; i, e = i-1, e.Prev() { l.insertValue(e.Value, &l.root) } }