Enviado em 11/04/2009 - 01:32h
algumém pode me ajudar com o seguinte problema, eu tenho que implementar um fila de prioridade usando um lista encadeada, e esta fila sera usado para um posto de saude, onde pede que organize-a pela ordem alfabética e pessoa com mais de 50 anos fiquem na frente. Abaixo segue a classe lista(onde me enganchei)
#include <iostream>
#include <cstdlib>
#include <string>
using namespace std;
#ifndef _LISTA_H_
#define _LISTA_H_
class Lista{
struct No{
string nome;
int idade;
/*struct*/ No *prox;
/*struct*/ No *ant;
};
public:
No *primeiro;
No *ultimo;
int tamanho;
public:
Lista();
~Lista();
void inserirNoInicio(string,int);
void inserirNoFinal(string,int);
string removerNoInicio();
string removerNoFinal();
void listar();
bool estaVazio();
};
#endif
void Lista::inserirNoInicio(string nome,int idade)
{
if(primeiro == NULL){
primeiro = (No*)malloc(sizeof(No));
primeiro->nome = nome;
primeiro->idade = idade;
primeiro->prox = NULL;
primeiro->ant = NULL;
ultimo = primeiro;
}else{
No *a = (No*)malloc(sizeof(No));
a->nome = nome;
a->idade = idade;
a->prox = primeiro;
primeiro->ant=a;
primeiro = a;
primeiro->ant=NULL;
}
};
quando crio um while para adicionar varios elementos, ele da o seguinte erro
in __gnu_cxx::exchange_and_add(volatile*,int) ()
acho que é na string nome e no int idade, pois eu comentei essas variáves no codigo e os nos foram criados. alguém sabe o que esta acontecendo?
#include <iostream>
#include <cstdlib>
#include <string>
using namespace std;
#ifndef _LISTA_H_
#define _LISTA_H_
class Lista{
struct No{
string nome;
int idade;
/*struct*/ No *prox;
/*struct*/ No *ant;
};
public:
No *primeiro;
No *ultimo;
int tamanho;
public:
Lista();
~Lista();
void inserirNoInicio(string,int);
void inserirNoFinal(string,int);
string removerNoInicio();
string removerNoFinal();
void listar();
bool estaVazio();
};
#endif
void Lista::inserirNoInicio(string nome,int idade)
{
if(primeiro == NULL){
primeiro = (No*)malloc(sizeof(No));
primeiro->nome = nome;
primeiro->idade = idade;
primeiro->prox = NULL;
primeiro->ant = NULL;
ultimo = primeiro;
}else{
No *a = (No*)malloc(sizeof(No));
a->nome = nome;
a->idade = idade;
a->prox = primeiro;
primeiro->ant=a;
primeiro = a;
primeiro->ant=NULL;
}
};
quando crio um while para adicionar varios elementos, ele da o seguinte erro
in __gnu_cxx::exchange_and_add(volatile*,int) ()
acho que é na string nome e no int idade, pois eu comentei essas variáves no codigo e os nos foram criados. alguém sabe o que esta acontecendo?