Write a grammar not necessarily LL1 that recognizes various
Solution
// Program that implements queue as a linked list
# include <iostream.h>
# include <conio.h>
class queue
{
private :
struct node
{
int data ;
node *link ;
} *front, *rear ;
public :
queue( ) ;
void addq ( int item ) ;
int delq( ) ;
~queue( ) ;
} ;
// initialises data member
queue :: queue( )
{
front = rear = NULL ;
}
// adds an element to the queue
void queue :: addq ( int item )
{
node *temp ;
temp = new node ;
if ( temp == NULL )
cout << \"\ Queue is full\" ;
temp -> data = item ;
temp -> link = NULL ;
if ( front == NULL )
{
rear = front = temp ;
return ;
}
rear -> link = temp ;
rear = rear -> link ;
}
// removes an element from the queue
int queue :: delq( )
{
if ( front == NULL )
{
cout << \"\ Queue is empty\" ;
return NULL ;
}
node *temp ;
int item ;
item = front -> data ;
temp = front ;
front = front -> link ;
delete temp ;
return item ;
}
// deallocates memory
queue :: ~queue( )
{
if ( front == NULL )
return ;
node *temp ;
while ( front != NULL )
{
temp = front ;
front = front -> link ;
delete temp ;
}
}
void main( )
{
queue a ;
clrscr();
a.addq ( 34 ) ;
a.addq ( 46 ) ;
a.addq ( 23 ) ;
a.addq ( 29 ) ;
a.addq ( 15 ) ;
a.addq ( 33 ) ;
a.addq ( 28 ) ;
int i = a.delq( ) ;
cout << \"\ Item extracted: \" << i ;
i = a.delq( ) ;
cout << \"\ Item extracted: \" << i ;
i = a.delq( ) ;
cout << \"\ Item extracted: \" << i ;
getch();
}

