Skip to content

Instantly share code, notes, and snippets.

@feraranas
Created March 10, 2022 02:59
Show Gist options
  • Select an option

  • Save feraranas/7bf7922d3fd0bba5830f8fd21c4d3ff6 to your computer and use it in GitHub Desktop.

Select an option

Save feraranas/7bf7922d3fd0bba5830f8fd21c4d3ff6 to your computer and use it in GitHub Desktop.
template <typename T>
class Node
{
private:
T data;
Node<T> *next;
Node<T> *previous;
template <typename U>
friend class DoubleLinkedList;
public:
Node(T data)
{
this->data = data;
next = NULL;
previous = NULL;
}
};
template <typename T>
class DoubleLinkedList
{
private:
Node<T> *Head;
Node<T> *Tail;
public:
DoubleLinkedList()
{
Head = Tail = NULL;
}
// Agrega al Tail de la lista ligada (FIFO)
void enqueue(T data)
{
Node<T> *newest = new Node<T>(data);
if (Head == NULL)
{
Head = Tail = newest;
}
else
{
Tail->next = newest;
newest->previous = Tail;
Tail = newest;
}
}
T dequeue()
{
if (Head == NULL)
{
throw -1;
}
else if (Head == Tail)
{
T data = Head->data;
delete Head;
Head = Tail = NULL;
return data;
}
else
{
T data = Head->data;
Head = Head->next;
delete Head->previous;
Head->previous = NULL;
return data;
}
}
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment