Table of Contents
Important Questions for Class 12 Computer Science (C++) – Linked List, Stack and Queue
Topic – 1
Linked List and Stack
Previous years Examination Questions
2 Marks Questions
Question 1:
Convert the following infix expression to its equivalent postfix expression, showing the stack contents for each step of conversion:
P/(Q-R)*S + T All India 2016
Аnswer:

Question 2:
Convert the following infix expression to its equivalent postfix expression, showing the stack contents for each step of conversion.
A/(B + Q*D-E Delhi 2016
Аnswer:


Question 3:
Convert the following infix expression to its equivalent postfix expression, showing the stack contents for each step of conversion.
P/(Q+(R-T)*U All India (C) 2016
Аnswer:


Question 4:
Convert the following infix expression to its equivalent postfix expression, showing the stack contents for each step of conversion:
(U* V+ R/ (S-T)) All India 2015
Аnswer:

Question 5:
Convert the following infix expression to its equivalent postfix expression, showing the stack contents for each step of conversion.
(X/Y+U*(V-W)) Delhi 2015
Аnswer:

Question 6:
Evaluate the following postfix expression. Show the. status of stack after execution of each operation separately:
F, T, NOT, AND, F, OR, T, AND Delhi 2014
Аnswer:

Question 7:
Evaluate the following postfix expression. Show the status of stack after execution of each operation separately:
T, F, NOT, AND, T, OR, F, AND All India 2014
Аnswer:

Question 8:
Evaluate the following postfix expression: (show status of stack after each operation)
100,40,8,/,20,10,-,+,* All India (C) 2014
Аnswer:

Question 9:
Evaluate the following postfix expression. Show the status of stack after execution of each operation:
5, 2, *, 50, 5, /, 5, -, + All India 2013
Аnswer:

Question 10:
Evaluate the following postfix expression. Show the status of stack after execution of each operation:
60, 6, /, 5, 2, *, 5, -, + Delhi 2013
Аnswer:

Question 11:
Evaluate the following postfix expression using a stack and show the contents of stack after execution of each operation:
5, 3, 2, *, 4, 2, /, -, * Delhi 2013C
Аnswer:


Question 12:
Evaluate the following postfix notation. Show status of stack after every step of evaluation (i.e. after each operator):
False, NOT, True, AND, True, False, OR, AND Delhi 2012
Аnswer:

Question 13:
Evaluate the following postfix notation. Show status of stack after every step of evaluation (i.e. after each operator):
True, False, NOT, AND, False, True, OR, AND All India 2012
Аnswer:

Question 14:
Evaluate the following postfix notation of expression:
50, 60, +, 20, 10, – ,* Delhi 2011
Аnswer:

Question 15:
Evaluate the following postfix notation of expression:
True, False, NOT, AND, True, True, AND, OR All india 2011
Аnswer:

Question 16:
Evaluate the following postfix notation of expression:
False, True, NOT, OR, True, False, AND, OR Delhi 2010
Аnswer:


Question 17:
Evaluate the following postfix notation of expression. Show the status of stack after each operation:
True, False, NOT, OR, False, True, OR, AND All India 2010
Аnswer:

Question 18:
Convert the following infix expression to its equivalent postfix expression.
Showing stack contents for the conversion:
(X – Y/(Z+U)*V) Delhi 2009
Аnswer:

Question 19:
Convert the following infix expression to its equivalent postfix expression.
Showing stack contents for the conversion:
(A + B* (C-D) IE) All India 2009
Аnswer:

4 Marks Questions
Question 20:
Write the definition of a member function PUSH( ) in C++, to add a new book in a dynamic stack of BOOKS considering the following code is already included in the program: All India 2015
struct BOOKS
{
char ISBN[20], TITLE[80];
BOOKS *Link;
};
class STACK
{
BOOKS *Top;
public:
STACK() {Top=NULL;}
void PUSH();
void POP();
∼STACK();
};
Аnswer:
void STACK::PUSH()
{
BOOKS *b = new BOOKS;
cout<<"Enter ISBN number";
cin>>b->ISBN;
cout<<"Enter TITLE";
gets(b—>TITLE);
if(TOP == NULL)
{
TOP = b;
}
else
{
b->Link = TOP;
TOP = b;
}
}
Question 21:
Write the definition of a member function Pop( ) in C++, to delete a book from a dynamic stack of TEXTBOOKS considering the following code is already included in the program. Delhi 2015
struct TEXTBOOKS
{
char ISBN[20];
char TITLE[80];
TEXTBOOKS *Link;
};
class STACK
{
TEXTBOOKS *Top;
public:
STACK(){Top=NULL;}
void Push();
void Pop();
∼STACKC);
};
Аnswer:
void STACK::Pop()
{
if(Top! = NULL)
{
TEXTBOOKS *Temp = Top;
Top = Top->Link;
delete Temp;
}
else
cout<<"Stack empty";
}
Question 22:
Write a function POPBOOK( ) in C++ to perform delete operation from a dynamic stack, which contains Bno and Title. Consider the following definition of NODE, while writing your C++ code. Delhi 2014
struct NODE
{
int Bno;
char Title[20];
NODE *Link;
};
Аnswer:
void P0PB00K(N0DE *top)
{
cout<<:Deleting the top element from stack\n";
cout<<"Book No:"<<top->Bno<<endl;
cout<<"BookTitle:"<<top->Title<<endl;
NODE *temp = top;
top = top->Link;
delete(temp);
}
Question 23:
Write a function PUSHBOOK( ) in C++ to perform insert operation on a dynamic stack, which contains Book_no and Book_Title. Consider the following definition of NODE, while writing your C++ code. All India 2014
struct NODE
{
char Book_No;
char Book_Title[20]:
NODE *Next:
};
Аnswer:
void PUSHBOOK(NODE *top)
{
NODE *NEW = new NODE;
cout<<"Enter the Book Number:";
cin>>NEW->Book_No;
cout<<"Enter the Book Title:";
gets(NEW->Book_Titie);
NEW->Next = NULL;
if(top == NULL)
top = NEW;
else
{
NEW->Next = top;
top = NEW;
}
}
Question 24:
Write a complete program in C++ to implement a dynamically allocated stack containing names of Countries. Delhi 2010
Аnswer:
The program is:
#include<iostream.h>
#include<stdio.h>
struct Node
{
char Country[30];
Node *Link;
};
class Stack
{
Node *Top;
public:
Stack(){Top = NULL;}
void Push();
void Pop();
void Display();
∼Stack();
};
void Stack :: Push()
{
Node *Temp = new Node;
gets(Temp->Country);
Temp->Link = Top;
Top = Temp;
}
void Stack :: Pop()
{
if(Top!=NULL)
{
Node *Temp = Top;
Top = Top->Link;
delete Temp;
}
else
cout<<"Stack empty";
}
void Stack :: Display()
{
Node *Temp = Top;
while(Temp!= NULL)
cout<<Temp->Country<<endl;
Temp = Temp->Link;
Stack :: ∼Stack()
{
while(Top!=NULL)
{
Node *Temp = Top;
Top = Top->Link;
delete Temp;
}
}
void main()
{
Stack ST;
char ch;
do
{
cout<<"Choose any one P/O/D/Q"; /* displaying choices P - Push,0 - Pop, D-Display, Q-Exit */
cin>>ch;
switch(ch)
{
case 'P':ST.Push();
break;
case '0':ST.Pop();
break;
case 'D':ST.Display();
}
}
while(ch!='Q');
}
Topic – 2
Queue
Previous years Examination Questions
4 Marks Questions
Question 1:
Write the definition of a member function DELETE( ) for a class QUEUE in C++, to remove a product from a dynamically allocated Queue of products considering the following code is already written as a part of the program. All India 2016
struct PRODUCT
{
int PID;
char PNAME[20];
PRODUCT *Next;
};
class QUEUE
{
PRODUCT *R,*F;
public:
QUEUE(){R=NULL;F=NULL;}
void INSERT();
void DELETE();
∼QUEUE();
};
Аnswer:
void QUEUE :: DELETE()
{
if(F!=NULL)
{
PRODUCT *Temp=F;
cout<<F->data<<"deleted\n";
F=F->Next;
delete Temp;
if(F==NULL)
R=NULL;
}
else
cout<<"\n Queue is Empty":
}
Question 2:
Write the definition of a member function INSERT( ) for a class QUEUE in C++, to insert an ITEM in a dynamically allocated Queue of items considering the following code is already written as a part of the program. Delhi 2016
struct ITEM
{
int INO;
char INAME[20];
ITEM *Link;
};
class QUEUE
{
ITEM *R, *F;
public:
QUEUE() {R=NULL; F=NULL;}
void INSERT();
void DELETE();
∼QUEUE();
};
Аnswer:
void QUEUE :: INSERT!)
{
ITEM *temp=new ITEM;
cout<<"\n Enter Item no & Item name:";
cin>>temp->INO;
gets(temp->IName);
temp->Next = Null;
if(R==Null)
{
R = temp;
F = temp;
}
else
{
R->Next = temp;
R = temp;
}
}
Question 3:
Write the definition of a member function INSERT! ) in C++, to add a new passenger detail in a dynamic queue of PASSENGERS considering the following code is already existing in the program. All India 2015
struct PASSENGERS
{
char PID[20]; NAME[80];
PASSENGERS *Next;
};
class QUEUE
{
PASSENGERS *Rear, *Front;
public:
QUEUE() {Rear=NULL; Front=NULL}
void INSERT();
void DELETE();
∼QUEUE();
};
Аnswer:
void QUEUE ::INSERT()
{
PASSENGERS * P = new PASSENGERS;
cout<<"Enter PID";
cin>>P->PID;
cout<<"Enter Name”;
gets(p->Name);
P->Next = NULL;
if(Rear == NULL)
{
Front = Rear = P;
}
else
{
Rear->Next = P;
Rear = P;
}
}
Question 4:
Write a function QDELETE( ) in C++ to perform delete operation in a Linked Queue, which contains Passenger number and Passenger name. Consider the following definition of node in the code. All India 2013
struct node
{
long int Pno;
char Pname[20];
node *Link;
};
Аnswer:
void QDELETE()
{
if(Front == NULL)
{
cout<<"Queue is empty";
exit(0);
}
else
{
node *temp = front;
cout<<"Passenger Information";
cout<<Front->Pno;
cout<<Front->Pname;
Front=Front->Link;
delete temp;
}
}
Question 5:
Write a function QINSERT( ) in C++ to perform insert operation on a linked queue, which contains client number and client name. Consider the following definition of NODE in the code of QINSERT ( ). Delhi 2013
struct NODE
{
long int Cno; //Client number
char Cname[20]; //Client name
NODE *Next;
};
Аnswer:
void QINSERT()
{
NODE *P = new Node;
cout<<"Enter the Client Number and Name:";
cin>>P- Cno;
gets(P->Cname) ;
P->Next=NULL;
if((front ~ NULL)&&(rear == NULL))
{
front=rear=P;
}
else
{
rear->Next = P;
rear = P;
}
}
Question 6:
Given the necessary declaration of linked implemented Queue containing players information (as defined in the following definition of Node). Also, write a user defined function in C++ to delete one Player’s information from the Queue.
Delhi 2013C
struct Node
{
int PlayerNo;
char PIayerName[20];
Node *Link;
};
Аnswer:
void Delete_NODE()
{
NODE *P;
if(front == Null)
cout<<”Queue is empty";
else if(front == rear)
{
P = front;
cout<<"Deleted Node information is";
cout<<P->PlayerNo;
puts(p->PlayerName);
front = rear = NULL;
delete P;
}
else
{
P = front;
cout<<"Deleted Node information is";
cout<<P->PlayerNo;
puts(P->PlayerName);
front = front->Link;
delete P;
}
}
Question 7:
Write a function in C++ to perform insert operation in a dynamic queue containing DVD’s information (represented with the help of an array of structure DVD). Delhi 2012
struct DVD
{
long No;
char title[20];
DVD *Link;
};
Аnswer:
void Insert()
{
DVD *p = new DVD;
cout<<"Enter the DVD number and Title";
cin<<p->No;
gets(p->title);
p->Link = NULL;
if((front — NULL) && (rear == NULL))
{
front - rear = p;
}
else
{
rear->Link = p;
rear = p;
}
}
Question 8:
Write a function in C++ to perform insert operation in a static circular queue containing book’s information (represented with the help of an array of structure BOOK). All India 2012
struct BOOK
{
long AccNo; //Book account number
char Title[20]; //Book Title
};
Аnswer:
void circularQueInsert(BOOK B[], int Front, int Rear, int Max)
{
if((Rear=Max-l && Front ==0)||(Front == Rear +1))
{
cout<<"Circular Queue is full";
exit(O);
}
else if(Front == -1 && Rear == -1)
{
Front = Rear = 0;
}
else if(Rear = Max -1 && Front >0)
{
Rear = 0;
}
else
Rear = Rear+1;
cout<<"Enter book account number and title";
cin>>B[Rear].AccNo;
gets(B[Rear].Title);
}
Question 9:
Write a function in C++ to perform insert operation on a dynamically allocated queue containing passenger details as given in the following definition of NODE; Delhi 2011
struct NODE
{
long Pno; //Passenger Number
char Pname[20]; //Passenger Name
NODE *Link;
};
Аnswer:
void Enter()
{
NODE *nptr=new NODE;
nptr->Link = NULL;
cout<<"Enter name and number for new passenger";
gets(nptr->Pname);
cin>>nptr->Pno;
if(rear == NULL)
{
front = rear = nptr;
}
else
{
rear->Link = nptr;
rear = nptr;
}
}
Question 10:
Write a function in C++ to perform delete operation on a dynamically allocated queue containing passenger details as given in the following definition of NODE: All India 2011
struct NODE
{
long Mno; //Member Number
char Mname[20]; //Member Name
NODE *Link;
};
Аnswer:
void remove(NODE *front)
{
NODE *nptr;
if(front == NULL)
{
cout<<"Queue is empty";
}
else
{
nptr = front;
front = front->Link;
if(front == NULL)
rear = NULL;
delete nptr;
}
Question 11:
Write a complete program in C++ to implement a dynamically allocated queue containing names of cities. All India 2010
Аnswer:
#include<iostream.h>
#include<string.h>
struct Node
{
char city[30];
Node *link;
};
class queue
{
Node *front, *rear;
public:
queue() {front=rear=NULL;}
void add_Q(); //add queue
void del_Q(); //delete queue
void show_Q(); //show queue
};
void queue :: add_Q()
{
Node *temp = new Node;
char ct[30];
cout<<"Enter city";
gets(ct);
strcpy(temp->city,ct);
temp->link = NULL;
if(rear == NULL)
front = rear = temp;
else
{
rear->link = temp;
rear = temp;
}
}
void queue :: del_Q()
{
Node *temp;
char ct[20];
if(front == NULL)
{
cout<<”queue is empty";
}
else
{
temp = front;
front = front->link;
strcpy(ct, temp->city);
cout<<"Deleted values are"<<ct;
delete temp;
}
if(front == NULL)
rear = front;
}
void queue :: show_Q()
{
Node *temp = front;
cout<<"The queue elements are";
while(temp!=NULL)
{
cout<<"\n"<<temp->city;
temp = temp->l ink;
}
}
void main()
{
int choice;
queue QUEUE;
char opt='Y';
do
{
cout<<"\nMain Menu";
cout<<"\nl.Insertion in queue";
cout<<"\n2.Deletion from queue";
cout<<"\n3.Traversal of queue";
cout<<"\n4.Exit from queue";
cout<<"\nEnter your choice from above(1,2,3,4)";
cin<<choice;
switch(choice)
{
case 1:
do
{
QUEUE.add_Q();
cout<<"\ndo you want to add more elements<Y/N>?";
cin>>opt;
}
while(toupper(opt)=='Y');
break;
case 2:
do
{
QUEUE.del_Q();
cout<<"\ndo you want to delete more elements<Y/N>?";
cin>>opt;
}
whi1e(toupper(opt)== 'Y');
break;
case 3:
QUEUE.show_Q();
break;
case 4;
exit(0);
}
}
while(choice!=4);
}
Question 12:
Write a function QUEINS( ) in C++ to insert an element in a dynamically allocated queue containing nodes of the following given structure: Delhi 2009
struct Node
{
int Pid; //Product Id
char Pname[20]; //Product Name
Node *Next;
};
Аnswer:
void QUEINS(Node *rear, int val, char valid)
{
Node *temp=new Node;
temp->Pid = val;
strcpy(temp->Pname,val1);
temp->Next = NULL;
if(rear == NULL)
rear = front = temp;
else
{
rear->Next = temp;
rear = temp;
}
}
Question 13:
Write a function QUEDEL( ) in C++ to display and delete an element in a dynamically allocated queue containing nodes of the following given structure: All India 2009
struct Node
{
int Itemno;
char Itemname[30];
Node *Link;
};
Аnswer:
void QUEDEL(Node *front)
{
Node *temp;
if(front == NULL)
cout<<"Queue is Empty";
else
{
temp = front;
cout<<"deleted item=";
cout<<front->Itemno;
cout<<front->Itemname;
front = front->Link;
if(front == NULL)
rear = NULL;
delete temp;
}
}