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();
}
}
Related Questions
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.