Transcript Slide 1

1
CS212: DATA STRUCTURES
Computer Science
Department
Lab 8: Queue
Queue LL Implementation (cont.) C++
2


Node Class – same Node class in the Linked List
Queue Class
class Queue{ // Declare Queue class
private :
Node *front,*rear;// front pointer to the first Node in the list &
rear pointer to the last Node.
int count; // count the number of nodes in the list
public :
Queue(){ // constructor
count=0;
front=rear=NULL;
}
int QueueCount(){ // return the count of nodes in the list
return count;}
bool emptyQueue(){// check is it empty Queue or not
20-Jul-15
return (count==0);}
Computer Science Department
Queue LL Implementation (cont.) C++
3

Queue Class – Enqueue function
void Enqueue( int data){
Node *NewNode = new Node(data);
if(emptyQueue())
front= NewNode;
else
rear->next= NewNode;
rear= NewNode;
count ++;
}
Queue LL Implementation (cont.) C++
4

Queue Class – Dequeue function
bool Dequeue ( int & dataout){
if (!emptyQueue()){
Node *pLoc = front;
dataout = front->Data;
if(QueueCount()==1)//if queue contain only one node.
rear=Null;
front = front->next;
count --;
delete pLoc; ;//freed memory
return true;
}
else
return false;
}
Queue LL Implementation (cont.) C++
5

Queue Class – QueueFront function
bool QueueFront( int & dataout){
if (!emptyQueue()){
dataout = front->Data;
return true;
}
else
return false;
}
Queue LL Implementation (cont.) C++
6

Queue Class – QueueRear function
bool QueueRear( int & dataout){
if (!emptyQueue()){
dataout = rear->Data;
return true;
}
else
return false;
}
Example 1
7
Write a method/ function in the Queue class that
append tow queues to be a single queues. Then
display the queue.
Ex:Q1: 11, 22, 10 - Q2: 15, 67, 90
After call Append method/function:
Q1: 11, 22, 10 ,15, 67, 90

20-Jul-15
Computer Science Department
Example 1 (C++)
8
void
Append(Queue Q){
rear->next=Q.front;
rear=Q.rear;
count=count+Q.count;
Q.count=0;
Q.front=NULL;
Q.rear=NULL;}
20-Jul-15
Computer Science Department
Example 1 (C++)
9
void DisplyQueue(){
int dataout , count2;
count2=QueueCount();
if(!emptyQueue()){
while(count2!=0){
Dequeue(dataout);
cout<<dataout<<" ";
Enqueue(dataout);
Count2--;}}
else
cout<<" Queue is empty \n";}
20-Jul-15
Computer Science Department
Example 1 ( C++ )
10
void main(){
Queue Q1,Q2;
Q1.Enqueue(11);
Q1.Enqueue(22);
Q1.Enqueue(10);
Q2.Enqueue(15);
Q2.Enqueue(67);
Q2.Enqueue(90);
Q1.Append(Q2);
Q1.DisplyQueue();
system("pause");}
20-Jul-15
Computer Science Department