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

Exercise 1 Modify the provided code (sll.c) in order to print the queue in the r

ID: 669883 • Letter: E

Question

Exercise 1

Modify the provided code (sll.c) in order to print the queue in the reverse order.List one more possible solution

Exercise 2

Modify the provided code (sll.s) so as to use a cyclist list instead of a single lined list


Sll.c file

#include

#include

typedef struct list_tag {

int data;

struct list_tag * next;

} ListNode;

typedef struct {

ListNode * first;

ListNode * last;

} queue;

void queueInsert (queue * qp, int t);

void queuePrint (queue q);

void queueInit(queue * qp);

void main(){

queue my_queue;

int data;

queueInit(&my_queue);

printf("Give me numbers. 0 = exit ");

scanf("%d",&data);

while (data != 0){

queueInsert(&my_queue, data);

scanf("%d",&data);

}

queuePrint(my_queue);

printf("Bye ");

}

void queueInit(queue * qp){

qp->first = NULL;

qp->last = NULL;

}

void queueInsert (queue * qp, int t){

ListNode * n = (ListNode *) malloc(sizeof(ListNode));

if (n == NULL) {

printf("Out of memory ");

exit(1);

}

n->data = t;

n->next = NULL;

if (qp->last == NULL)

qp->first = qp->last = n;

else {

qp->last->next = n;

qp->last = n;

}

}

void queuePrint (queue q){

printf("Now I will print the queue ");

ListNode * n;

for (n = q.first; n != NULL; n = n->next) {

printf("%d ", n->data);

}

}

Explanation / Answer


void queuePrint (queue q){
printf("Now I will print the queue ");
ListNode * n;
//To print queue in reverse order, insert queue elements in a stack
stack<int> s = new stack<int>();
for (n = q.first; n != NULL; n = n->next) {
s.push(n->data);
}
//Now pop from stack and print
while(!s.empty()){
   cout<<s.top();
   s.pop();
}
}