Estrutura de dados

Disponível somente no TrabalhosFeitos
  • Páginas : 2 (323 palavras )
  • Download(s) : 0
  • Publicado : 6 de junho de 2011
Ler documento completo
Amostra do texto
Correção de Exercício sobre Filas
Dada duas filas (P e N), faça um programa para ler diversos números e, para cada um:
 Se positivo, inserir na fila P;
 Se negativo, inserir na fila N;
 Sezero, retirar um elemento de cada fila.
Solução:
#include
#include
#include
#include
#define Tam 100
struct fila
{
int vdados[Tam];
int inicio, fim;
};
int RemoverFila (struct fila *pf,char c);
void InsereFila (struct fila *pf, int x);
void ApresentaFila (struct fila *pf, char c);
int main()
{
struct fila p, n;
int num;
char num1[10];
p.inicio = p.fim = Tam - 1;
n.inicio =n.fim = Tam - 1;
printf("\nInforme um numero inteiro (positivo, negativo ou nulo) ou digite s para sair: ");
gets(num1);
while (!((strcmp(num1,"S")==0) || (strcmp(num1,"s")==0)))
{
num =atoi(num1);
if (num > 0)
InsereFila (&p, num);
else
if (num < 0)
InsereFila (&n, num);
else
{
RemoverFila(&p, 'p');
RemoverFila(&n, 'n');
}
system("cls");
printf("\nInforme um numero inteiro(positivo, negativo ou nulo) ou digite s para
sair: ");
gets(num1);
}
ApresentaFila(&p, 'p');
ApresentaFila(&n, 'n');
printf("\n\n");
system("pause");
return 0;
}
void ApresentaFila (struct fila*pf, char c)
{
int i;
if (!(pf->inicio == pf->fim))
{
if (pf->inicio == Tam - 1)
i = 0;
else
i = pf->inicio + 1;
printf("\n\n**** Elementos da Fila %c ****", c);
for (; i fim; i++)
{printf("\n%d", pf->vdados[i]);
}
}
else
printf("\n\n**** Nao ha elementos para serem apresentados na fila %c ****", c);
}
void InsereFila (struct fila *pf, int x)
{
if (pf -> fim == Tam - 1)
pf ->fim = 0;
else
(pf -> fim)++;
if (pf -> fim == Tam - 1)
{
printf("\nEstouro na fila!!!\n\n");
getch();
(pf -> fim)--;
return;
}
pf -> vdados[pf -> fim] = x;
}
int RemoverFila (struct fila*pf, char c)
{
if (pf -> inicio == pf -> fim)
{
printf("\nA fila %c esta vazia! Nao ha elementos para remover!\n\n", c);
getch();
return;
}
if (pf -> inicio == Tam - 1)
pf -> inicio = 0;...
tracking img