murilogoes
(usa Linux Mint)
Enviado em 22/10/2015 - 09:48h
Desculpa
Este é o código feito até o momento:
#include <iostream>
#include <string.h>
using namespace std;
class Node
{
friend class Lista;
private:
Node* proximo;
string valor;
public:
Node(char* val)
{
valor = val;
proximo = NULL;
}
};
class Lista
{
private:
Node* primeiro;
int tamanho;
public:
Lista()
{
primeiro = NULL;
}
Lista(Node* pri)
{
primeiro = pri;
tamanho = 1;
}
~Lista()
{
if (primeiro)
{
Node *p = primeiro;
Node *prox = primeiro->proximo;
while (p)
{
prox = p->proximo;
delete p;
p = prox;
}
}
}
bool Inserir(char* val)
{
tamanho++;
Node *novoNode = new Node(val);
if (!primeiro)
primeiro = novoNode;
else
{
Node *p = primeiro;
while (p->proximo)
p = p->proximo;
p->proximo = novoNode;
}
return true;
}
bool Excluir(char* val)
{
if (!primeiro)
return false;
Node *p = primeiro;
Node *ant = primeiro;
while (_stricmp(val, p->valor.c_str()))
{
ant = p;
if (p->proximo)
p = p->proximo;
else
return false;
}
if (ant == p)
{
if (tamanho == 1)
{
tamanho = 0;
primeiro = NULL;
}
else
{
primeiro = p->proximo;
tamanho = 1;
}
return true;
}
ant->proximo = p->proximo;
delete p;
tamanho--;
return true;
}
void ImprimirLista()
{
cout << "**********************************"<< endl;
if (!primeiro)
return;
Node *p = primeiro;
while (p)
{
cout << p->valor << endl;
p = p->proximo;
}
cout << "**********************************"<< endl;
}
bool Pesquisar(char* val)
{
if (!primeiro)
return false;
Node *p = primeiro;
// Node *ant = primeiro;
while (_stricmp(val, p->valor.c_str()))
{
// ant = p;
if (p->proximo)
p = p->proximo;
else
return false;
}
return true;
}
void Inverter()
{
}
};
int main()
{
Lista *l = new Lista();
l->Inserir("joao");
l->Inserir("maria");
l->Inserir("jose");
l->ImprimirLista();
// l->Inverter();
// l->ImprimirLista();
l->Excluir("joao");
l->ImprimirLista();
cout << l->Pesquisar("maria") << endl;
l->Excluir("joao");
l->ImprimirLista();
l->Excluir("maria");
l->ImprimirLista();
delete l;
// return 0;
}