Loading AI tools
De Wikipedia, la enciclopedia libre
Una cola doblemente terminada o deque (del inglés double ended queue) es una estructura de datos lineal que permite insertar y eliminar elementos por ambos extremos, podría verse como un mecanismo que permite aunar en una única estructura las funcionalidades de las pilas (estructuras LIFO) y las colas (estructuras FIFO), en otras palabras, estas estructuras (pilas y colas) podrían implementarse fácilmente con una deque.
Las operaciones que se pueden realizar con una cola doblemente terminada son:
operación | C++ | Java | Perl | Python | Ruby |
---|---|---|---|---|---|
Insertar elemento al final | push_back | offerLast | push | append | push |
Insertar elemento al principio | push_front | offerFirst | unshift | appendleft | unshift |
Eliminar el último elemento | pop_back | pollLast | pop | pop | pop |
Eliminar el primer elemento | pop_front | pollFirst | shift | popleft | shift |
Examinar el último elemento | back | peekLast | $_[-1] | <obj>[-1] | last |
Examinar el primer elemento | front | peekFirst | $_[0] | <obj>[0] | first |
Hay al menos dos formas eficientes de implementar una cola doblemente terminada: Con un vector dinámico modificado o con una lista doblemente enlazada (ver Lista (estructura de datos)).
La cola doblemente terminada se puede implementar utilizando una variante del vector dinámico que pueda crecer por ambos extremos. Este vector tiene todas las propiedades de un vector dinámico, como el acceso en tiempo constante a cualquiera de sus elementos, buena identificación de referencias, y una ineficiente forma de insertar o eliminar elementos por en medio de la estructura. A estas características se añade la de que el tiempo de inserción y borrado de elementos en los dos extremos de la estructura es constante (en vez de sólo uno de los extremos). Esta implementación requiere:
La Librería Estándar de Plantillas de C++ proporciona las clases genéricas std::deque y std::list, donde ambas ofrecen las operaciones de colas doblemente terminadas.
El Collections Framework de Java incluye una nueva interfaz Deque que proporciona la funcionalidad para insertar y eliminar en ambos extremos. Está implementada por clases como ArrayDeque y LinkedList, las implementaciones con array dinámico y lista enlazada respectivamente.
Python 2.4 introduce el módulo collections con soporte para objetos "cola doblemente terminada".
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.