我不明白双端和双向链表的区别。
两者的主要区别是什么?
在双向链表中,每个节点都有两个指针。一个指向它的下一个节点,另一个指向它的前一个节点。
在双端链表中,每个节点只有一个指针指向它的下一个节点。它与单端链表的不同之处在于,它不是只有一个“头”节点,而是包含两个此类指针(“第一个”和“最后一个”),因此有人可以从链表的两端向链表插入元素它。
(最后一张图不是很清楚,但抓住了两端的重点。)
双端列表类似于普通链表,但它有一个额外的特性:对最后一个链接和第一个链接的引用。 在双向链表中,每个链接都有两个对其他链接的引用,而不是一个。第一个是下一个链接,就像在普通列表中一样。第二个是上一个链接。
双向链表是一个列表,其中元素具有指向列表前后元素的指针。
根据我的理解,双端列表与双端队列相同。这是一个队列,您可以从中添加和删除顶部和底部的项目。
单链接是单向的,它使用更少的内存,插入的复杂度是 O(n)。虽然双链是双向的(下一个和上一个),但它比单列表使用更多的内存,插入和删除的复杂度是 O(n)。
在两个链表中,都有两个来自前端和末尾的指针。但是双端列表不能向后移动,只能向前移动,而双向链表可以向前和向后移动。
因为它只包含节点中的下一个节点引用,所以双端链表更类似于单链表。但是,它与单个列表不同,因为列表包含第一个和最后一个节点的指针。此外,可以从两端添加新节点。
双向链表中的节点包含对下一个和上一个节点的引用。