我读了我的书,写到使用链表从队列中插入和删除都具有O(1)的复杂性,但是我的理解是删除将是O(1)但插入的是O(n)因为它将遍历直到结束指针。
答案 0 :(得分:0)
当使用链表实现队列时,链表是保存数据的内部数据结构,因为队列是FIFO(先进先出),所以唯一的要求是需要删除元素从头到尾的顺序和元素仅需添加到尾部。一个单链表是一个足够的容器,因为它保持了指针从头到尾通过元素的单向路径。这样,包装器Queue的唯一要求就是保留对头部的引用和对尾部的引用。
当弹出/删除一个元素时,队列使用头指针在O(1)时间内删除第一个元素,并将对下一个元素的链接引用用作新的头指针。当元素被推入/添加时,它会用指向新元素的指针标记尾元素,以保持不间断的“队列”,并且还保留对添加元素的引用,以便可以在O中添加下一个元素(1)时间。