Pesquisar neste blog

12/02/2018

Fila em C++

Objetivo: Inserir dados em uma lista e remover o ultimo elemento inserido, consultar a lista e exibir os dados da lista  (Funciona como fila).

#include <stdio.h>
#include <stdlib.h>
#include <cstdlib>
#include <iostream>
using namespace std;

typedef struct celulalista{
int informacao;
struct celulalista *proximo;
}celula;

void initlista(celula *pRecebido);
void insertlista(celula *pRecebido);
void buscalistasimples(celula *pRecebido);
void removeelementolistasimples(celula *pRecebido);
int levalor(int *valorrecebido);

int main(){
//Declaracoes
celula *pLista;
int opcao=0;

//pLista = (celula *)malloc(sizeof(struct celulalista));

pLista = new celulalista;
initlista(pLista);
for(;;)
{
cout<<"\n\t1 - Inserir : ";
cout<<"\n\t2 - Consultar : ";
cout<<"\n\t3 - Remover : ";
cout<<"\n\t4 - Sair : \n\t";
cin>>opcao;
opcao = levalor(&opcao);
switch(opcao)
{
case 1:
insertlista(pLista);
break;
case 2:
buscalistasimples(pLista);
break;
case 3:
removeelementolistasimples(pLista);
break;
case 4:
exit(0);
}
}
return 0;
}

/*
Inicializacao da lista encadeada
*/

void initlista(celula *pRecebido){
(pRecebido)->proximo = NULL;
}

/*
Funcao para insercao no inicio
*/

void insertlista(celula *pRecebido){
//Declaracoes
celula *temporario;
int valor;
//Instrucoes
cout<<"\n\tInforme um valor a ser inserido : ";
cin>>valor;
temporario = (celula * )malloc(sizeof(celula));
temporario->informacao = valor;
temporario->proximo = (pRecebido)->proximo;
(pRecebido)->proximo = temporario;
}

/*
Funcao para percorrer elementos
*/

void buscalistasimples(celula *pRecebido){
//Declaracoes
celula *temporario;
//Instrucoes
if((pRecebido)->proximo == NULL){
cout<<"\tLista Vazia!\n";
}else{
temporario = (celula * )malloc(sizeof(celula));
temporario = (pRecebido)->proximo;
system("cls");
while(temporario!=NULL){
cout<<"\n\tValor : "<<temporario->informacao<<"\n";
temporario = temporario->proximo;
}
}
}
/*
Remove elemento da cabeca
*/

void removeelementolistasimples(celula *pRecebido){
//Declaracoes
celula *temporario;
//Instrucoes
if((pRecebido)->proximo == NULL){
cout<<"\n\tLista Vazia!";
}else{
temporario = (pRecebido)->proximo;
(pRecebido)->proximo = temporario->proximo;
free(temporario);
}
}

int levalor(int *valorrecebido){
//Declaracoes
//Instrucoes
while((*valorrecebido > 4 )|| (*valorrecebido<1)){
cout<<"\n\tOpcao Invalida. Informe novamente : \n";
scanf("%d", &(*valorrecebido));
}
return (*valorrecebido);
}

Nenhum comentário: