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;