Dsa Assignment 1 CT - 2019
Dsa Assignment 1 CT - 2019
2. Queues:
- Append(Q, item): Adds an item to the rear of the queue.
- Serve(Q): Removes and returns the item from the front of the queue.
- Peek(Q): Returns the item at the front of the queue without removing it.
3. Deques:
- AppendFront(DQ, item): Adds an item to the front of the deque.
- AppendRear(DQ, item): Adds an item to the rear of the deque.
- ServeFront(DQ): Removes and returns the item from the front of the deque.
Stack (S):
Queue (Q):
Deque (DQ):
iv) C language code to implement the Queue (Q) operations:
```c
#include <stdio.h>
#include <stdlib.h>
#define MAX_SIZE 6
typedef struct {
int items[MAX_SIZE];
int front;
int rear;
int size;
} Queue;
void create(Queue* q) {
q->front = 0;
q->rear = -1;
q->size = 0;
}
void append(Queue* q, int item) {
if (q->size >= MAX_SIZE) {
printf("Queue is full. Unable to append.\n");
return;
}
q->rear = (q->rear + 1) % MAX_SIZE;
q->items[q->rear] = item;
q->size++;
}
int serve(Queue* q) {
if (q->size == 0) {
printf("Queue is empty. Unable to serve.\n");
return -1;
}
int item = q->items[q->front];
q->front = (q->front + 1) % MAX_SIZE;
q->size--;
return item;
}
int peek(Queue* q) {
if (q->size == 0) {
printf("Queue is empty. Unable to peek.\n");
return -1;
}
return q->items[q->front];
}
int main() {
Queue q;
create(&q);
append(&q, 50);
append(&q, 100);
append(&q, 125);
append(&q, 15);
return 0;
}