Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #define TYPE int
- typedef struct Node{
- TYPE data;
- struct Node *next;
- }Node;
- typedef struct Queue{
- Node *head,*tail;
- int numberOfElements;
- }Queue;
- void reset(Queue *q);
- int isEmpty(Queue *q);
- void enqueue(Queue *q,TYPE val);
- TYPE dequeue(Queue *q);
- void display(Queue q);
- int main(){
- system("clear");
- Queue q; reset(&q);
- enqueue(&q,1); enqueue(&q,2);
- enqueue(&q,4); enqueue(&q,5);
- enqueue(&q,3); enqueue(&q,6);
- dequeue(&q);
- dequeue(&q);dequeue(&q);
- dequeue(&q);dequeue(&q);
- dequeue(&q);dequeue(&q);
- enqueue(&q,1);enqueue(&q,3);
- display(q);
- return 0;
- }
- void reset(Queue *q){ q->head = q->tail = NULL; q->numberOfElements = 0; }
- int isEmpty(Queue *q){ return q->numberOfElements == 0; }
- void enqueue(Queue *q,TYPE val){
- Node * node = (Node*) malloc(sizeof(Node));
- node->data = val;
- node->next = NULL;
- isEmpty(q) ? (q->tail = node) : (q->head->next = node);
- q->head = node;
- q->numberOfElements++;
- }
- TYPE dequeue(Queue *q){
- if(!isEmpty(q)) {
- TYPE x = q->tail->data;
- Node *tmp = q->tail;
- if(!q->tail->next)
- reset(q);
- else{
- free(q->tail);
- q->tail = tmp->next;
- }
- q->numberOfElements--;
- return x;
- }
- return 1<<31;
- }
- void display(Queue q){ while(!isEmpty(&q)) printf("[%d]\n", dequeue(&q)); }
Advertisement
Add Comment
Please, Sign In to add comment