
		hlorenci
		
		(usa Outra)
		
		Enviado em 19/10/2016 - 15:27h 
		Sou iniciante em c++, não consegui descobrir o problema do algoritmo da questão abaixo:
1-Na tentativa de criar um programa para testar os conceitos de filas, você escreveu o seguinte código: 
 
#include <string.h>
#include <stdlib.h>
#include <conio.h>
#include <math.h>
#include <stdio.h>
struct node {
int info;
struct node *ptr;
}*frente, *cauda, *temp, *frente1;
int primeirodafila();
void inserir( int data);
void apagar();
void esvaziar();
void mostrar();
void criar();
void tamanho();
int count = 0;
int main () {
	int no, ch, e;
	criar();
	while (1)
	{
printf( "\n 1 - inserir um elemento;");
printf( "\n 2 - apagar um elemento;");
printf( "\n 3 - devolver o primeiro elemento;");
printf( "\n 4 - esvaziar a fila;");
printf( "\n 5 - mostrar a fila;");
printf( "\n 6 - tamanho da fila");
printf( "\n 7 - sair");
printf( "\n Digite sua escolha");
scanf_s( "%d", &ch);
switch (ch){
case 1:
	printf("\n Digite o elemento:");
	scanf_s("%d", &no);
	inserir(no);
	break;
case 2:
	apagar();
	break;
case 3:
	e = primeirodafila();
	if (e != 0){
		printf("\n O primeiro da fila: %an", e);
		system("Pause;");
}
else {
		printf ("\n A fila vazia.Xn");
		system ("Pause;");
}
	break;
case 4:
	esvaziar();
	break;
case 5:
	mostrar();
	printf( "\n Digite sua escolha");
	scanf_s( "%d", &ch);
	break;
case 6:
	tamanho();
	printf( "\n Digite sua escolha: ");
	scanf_s( "%d", &ch);
	break;
case 7:
	exit(0);
	break;
default:
	printf("\n Digite sua escolha");
	break;
}
system("cls");
}
}
void criar() {frente = cauda = NULL;}
void tamanho() { printf( "\n Tamanho da fila: %d", count); }
void inserir( int data){
	if (cauda == NULL)
{
	cauda = (struct node *)malloc( 1 * sizeof( struct node));
	cauda->ptr = NULL;
	cauda->info = data;
	frente = cauda;
}
else
{
	temp = (struct node *)malloc( 1 * sizeof( struct node));
	cauda->ptr = temp;
	temp->info = data;
	temp->ptr = NULL;
	temp = cauda;
}
count++;
}
void mostrar() {
	frente1 = frente;
	if ((frente1 == NULL) && (cauda == NULL))
{
	printf( "\nA fila vazia.\n");
	return;
}
while (frente1 != cauda)
{
	printf( "%d ", frente1->info);
	frente1 = frente1->ptr;
}
if (frente1 == cauda)
	printf( "%d", frente1->info);
}
void apagar(){
	frente1 = frente;
	if (frente1 == NULL)
	{
	
		printf("Xn A fila vazia");
		return;
}
else
	if (frente1->ptr != NULL)
	{
		frente1 = frente1->ptr;
		printf("\n Retirado da fila o valor: %d", frente->info);
		free(frente);
		frente = frente1;
	}
	else
	{
		printf( "\n Retirado da fila o valor: %d", frente->info);
		free(frente);
		frente = NULL;
		cauda = NULL;
	}
count--;
}
int primeirodafila(){
	if ((frente != NULL) && (cauda != NULL))
		return(frente->info);
	else
		return 0;
}
void esvaziar(){
	if ((frente == NULL) && (cauda == NULL))
		printf("\nA fila vazia");
	else
		printf("\nA fila vazia");
system("pause");
}
  
No entanto, o seu programa não funcionou e você precisa encontrar onde está o erro e cabe a você garantir que o código apresentado atenda a estrutura básica de um programa contendo uma lista.Considerando as opções a seguir, marque aquela que contém a linha de código que está errada.
 
A	temp = cauda;
 
B	cauda->info = data;
 
C	frente1 = frente1->ptr;
 
D	return(frente->info);
 
E	cauda->ptr = NULL;