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";
}




Leave a reply