как правило, избегайте использования глобальных переменных и аргументов с одинаковыми именами, это немного сбивает с толку и, возможно, вызывает проблему, которую вы видите.
в том виде, в каком ваш код теперь стоит, когда вы изменяете front
внутри своей функции, вы фактически не изменяете глобальную переменную front, а копируете.
, так что либо передайте адрес переднего и заднегов функцию или полностью удалите параметры.
void enqueue(struct Node **front,struct Node **rear,int ele)
{
struct Node *temp=(struct Node*)malloc(sizeof(struct Node));
struct Node* ptr=*front;
...
if (front == NULL)
{
temp->data = ele;
temp->next = NULL;
*front = temp; // this will actually change front
printf ("%d", front->data);
}
и вызовите его как
int n, i;
for (i = 0; i < 3; i++)
{
printf ("Enter Element");
// scanf ("%d", &n); avoid using scanf like this, use instead fgets
char line[32];
if (fgets(line, sizeof(line), stdin) != NULL)
{
int n = atoi(line);
enqueue (&front, &rear, n);
}
}