Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

Then Implement a nested class Double Node for building doubly-linked lists, wher

ID: 3840748 • Letter: T

Question

Then Implement a nested class Double Node for building doubly-linked lists, where each node contains a reference to the item preceding it and the item following it in the list (null if there is no such item). Then implement the methods for it item the following tasks: Insert at the beginning Insert at the end Remove from the beginning Remove from the end Insert before a give node Insert after a given node Remove a given node Move to front (move an object to the front) Move to end (moved and object to the end)

Explanation / Answer

#include <stdio.h>
#include<stdlib.h>
struct node
{
int info;
struct node *ptr;
}*front,*rear,*temp,*front1;
int frontelement();
void enq(int data);
void deq();
void empty();
void display();
void create();
void queuesize();
int count = 0;   
void main()
{ int no, ch, e;   
printf(" 1 - Enque");
printf(" 2 - Deque");
printf(" 3 - Front element");
printf(" 4 - Empty");
printf(" 5 - Exit");
printf(" 6 - Display");
printf(" 7 - Queue size");
create();
while (1)
{
printf(" Enter choice :");
scanf("%d", &ch);
switch (ch)
{
case 1: printf("Enter data :");
scanf("%d", &no);
enq(no);
break;
case 2: deq();
break;
case 3: e = frontelement();
if (e != 0)
printf("Front element :%d", e);
else printf(" No front element in Queue as queue is empty");
break;
case 4: empty();
break;
case 5: exit(0);
case 6: display();
break;
case 7: queuesize();
break;
default: printf("Wrong choice, Please enter correct choice " break; } }} /* Create an empty queue */
void create()
{
front = rear = NULL;} /* Returns queue size */void queuesize()
{ printf(" Queue size : %d", count);} /* Enqueing the queue */void enq(int data){ if (rear == NULL)
{
rear = (struct node *)malloc(1*sizeof(struct rear->ptr = NULL;
rear->info = data; front = rear; }
else
{ temp=(struct node *)malloc(1*sizeof(struct rear->ptr = temp;
temp->info = data;
temp->ptr = NULL;
rear = temp;
} count++;} /* Displaying the queue elements */void display(){ front1 = front;
if ((front1 == NULL) && (rear == NULL)) {printf("Queue is empty");
return; }
while (front1 != rear)
{printf("%d ", front1->info);
front1 = front1>ptr; }
if(front1 == rear) printf("%d", front1->info);} /* Dequeing the queue */void deq(){ front1 = front;
if (front1 == NULL)
{ printf(" Error: Trying to display elements from empty queue" return; }
else if (front1->ptr != NULL)
{ front1 = front1->ptr;
printf(" Dequed value : %d", front-> free(front); front = front1; }
else { printf(" Dequed value : %d", front-> free(front);
front = NULL;
rear = NULL; } count--;} /* Returns the front element of queue */int frontelement(){ if ((front != NULL) && (rear != NULL)) return(front->info);
else return 0;} /* Display if queue is empty or not */void empty(){ if ((front == NULL)&& (rear == NULL)) printf(" Queue empty");
elseprintf("Queue not empty");}