#include<stdio.h>
#include<stdlib.h>
struct que
{
    int size;
    int front;
    int rare;
    int* array;
};

int isEmpty(struct que *q){
    if(q->rare==q->front){
        return 1;
    }
    return 0;
}
int isFull(struct que *q){
    if(q->rare==q->size-1){
        return 1;
    }
    return 0;
}
void enque(struct que *q, int val){
    if(isFull(q)){
        printf("This Queue is full\n");
    }
    else{
        q->rare++;
        q->array[q->rare] = val;
    }
}
int deque(struct que *q){
    int a = -1;
    if(isEmpty(q)){
        printf("This Queue is empty\n");
    }
    else{
        q->front++;
        a = q->array[q->front];
    }
    return a;
}
int main(){
    struct que q;
    q.size = 100;
    q.front = q.rare = 0;
    q.array = (int*) malloc(q.size*sizeof(int));
    int node;
    int i = 1;
    int visited[7] = {0,0,0,0,0,0,0};
    int matrix [7][7] = {
        {0,1,1,1,0,0,0},
        {1,0,1,0,0,1,0},
        {1,0,0,1,1,0,0},
        {1,0,1,0,1,0,0},
        {0,0,0,1,0,1,1},
        {0,1,0,0,1,0,0},
        {0,0,0,0,1,0,0}
    };
    printf("%d", i);
    visited[i] = 1;
    enque(&q, i);
    while (!isEmpty(&q))
    {
        int node = deque(&q);
        for (int j = 0; j < 7; j++)
        {
            if(matrix[node][j] ==1 && visited[j] == 0){
                printf("%d", j);
                visited[j] = 1;
                enque(&q, j);
            }
        }
    }
    return 0;
}

Last modified: Thursday, 18 May 2023, 1:39 PM