Struttura dati coda 3

Posted on 28. Apr, 2006 by Administrator in cpp, tutorials


In questo articolo tratteremo la struttura dati coda

#include <iostream.h>
#include <stdio.h>

template <class T>
class Node
{
private :

T data;
Node<T> * link;

public :

friend LinkedQueue<T>;
};

template <class T>
class LinkedQueue
{
private :

Node<T> * front;
Node<T> * rear;

public :
LinkedQueue () { front = rear = NULL; }
~LinkedQueue ();

int IsEmpty () const { return (! front); }

T First () const;
T Last () const;

LinkedQueue<T> & Enqueue (const T & x);
LinkedQueue<T> & Dequeue (T & x);
};

template <class T>
LinkedQueue<T>::~LinkedQueue ()
{
Node<T> * next;

while (front)
{
next = front -> link;
delete front;
front = next;
}
}

template <class T>
T LinkedQueue<T>::First () const
{
if (IsEmpty ())
{
cout << "La coda Å  vuota !!!\n";
return NULL;
}

return front -> data;
}

template <class T>
T LinkedQueue<T>::Last () const
{
if (IsEmpty ())
{
cout << "La coda Å  vuota !!!\n";
return NULL;
}

return rear -> data;
}

template <class T>
LinkedQueue<T> & LinkedQueue<T>::Enqueue (const T & x)
{
Node<T> * ptr = new Node<T>;

ptr -> data = x;
ptr -> link = NULL;

if (front) // Coda non vuota
rear -> link = ptr;
else // Coda vuota
front = ptr;

rear = ptr;

return *this;
}

template <class T>
LinkedQueue<T> & LinkedQueue<T>::Dequeue (T & x)
{
if (IsEmpty ())
{
cout << "La coda Å  vuota !!!\n";
return *this;
}

x = front -> data;

Node<T> * ptr = front;
front = front -> link;
delete ptr;

return *this;
}

void main ()
{
LinkedQueue<int> Interi;

Interi.Enqueue (3);
Interi.Enqueue (7);
cout << Interi.First() << " " << Interi.Last() << endl;

int i;
Interi.Dequeue (i); cout << i << '\t';
Interi.Dequeue (i); cout << i << '\t';
cout << "\n\n";

}


Correlati

Leave a reply