-
Notifications
You must be signed in to change notification settings - Fork 0
Description
#include <stdio.h>
#include <stdlib.h>
typedef struct Node {
int data;
struct Node* link;
}Node;
typedef struct {
Node* front;
Node* rear;
}Queue;
void init(Queue* q) {
q->front = NULL;
q->rear = NULL;
}
int is_empty(Queue * s) {
if (s->front == NULL) return 1;
return 0;
}
void enqueue(Queue* s, int item) {
Node* temp = (Node*)malloc(sizeof(Node));
temp->data = item;
temp->link = NULL;
if (is_empty(s)) {
s->front = s->rear = temp;
}
else {
s->rear->link = temp;
s->rear = temp;
}
}
int dequeue(Queue* q) {
if (is_empty(q)) puts("error");
else {
Node* del = q->front;
int value = del->data;
q->front = q->front->link;
if (q->front == NULL) { q->rear = NULL; }
free(del);
return value;
}
}
void print_queue(Queue* q) {
for (Node* p = q->front;p != NULL; p = p->link) {
printf("%d->", p->data);
}
printf("NULL\n");
}
int main() {
Queue que;
init(&que);
enqueue(&que, 10); print_queue(&que);
enqueue(&que, 20); print_queue(&que);
enqueue(&que, 30); print_queue(&que);
enqueue(&que, 40); print_queue(&que);
dequeue(&que); print_queue(&que);
dequeue(&que); print_queue(&que);
dequeue(&que); print_queue(&que);
dequeue(&que); print_queue(&que);
}