Não estou conseguindo remover o nome noronha, por que quando removo uma letra por letra, ai remove a

1. Não estou conseguindo remover o nome noronha, por que quando removo uma letra por letra, ai remove a

joao
joaobahia

(usa Outra)

Enviado em 23/01/2016 - 11:15h

#include<stdio.h>
#include<stdlib.h>

struct lista {
char info;
struct lista* prox;
};
typedef struct lista Lista;



Lista* inicializa (void){
return NULL;
}



Lista* insere (Lista* l, char i){
Lista* novo = (Lista*) malloc(sizeof(Lista));
novo->info = i;
novo->prox = l;
return novo;
}
Lista* retira (Lista* l, char v)
{
Lista* ant = NULL;
Lista* p = l;

while (p != NULL && p->info != v) {
ant = p;
p = p->prox;
}

if (p == NULL)
return l;
if (ant == NULL) {
l = p->prox;
}
else {
ant->prox = p->prox;
}
free(p);
return l;
}



void imprime (Lista* l){
Lista* p;
for (p = l; p != NULL; p = p->prox){
printf("%c", p->info);
}
}

int main (void)
{
Lista* l;

printf("Dois nomes: \n");
l = inicializa();
l = insere(l, 'A');
l = insere(l, 'S');
l = insere(l, 'O');
l = insere(l, 'R');
l = insere(l, 'D');
l = insere(l, 'E');
l = insere(l, 'P');
l = insere(l, ' ');
l = insere(l, 'A');
l = insere(l, 'H');
l = insere(l, 'N');
l = insere(l, 'O');
l = insere(l, 'R');
l = insere(l, 'O');
l = insere(l, 'N');
l = insere(l, ' ');
l = insere(l, 'O');
l = insere(l, 'D');
l = insere(l, 'L');
l = insere(l, 'E');
l = insere(l, 'I');
l = insere(l, 'C');
l = insere(l, 'N');
l = insere(l, 'A');
l = insere(l, 'R');
l = insere(l, 'F');

imprime(l);

return 0;
}


  


2. Re: Não estou conseguindo remover o nome noronha, por que quando removo uma letra por letra, ai remove a

joao
joaobahia

(usa Outra)

Enviado em 23/01/2016 - 11:16h

Não estou conseguindo remover o nome noronha, por que quando removo uma letra por letra, ai remove as letras do primeiro nome, é um trabalho da facul. e tem que fazer com lista encadeada.


3. Re: Não estou conseguindo remover o nome noronha, por que quando removo uma letra por letra, ai remo

Paulo
paulo1205

(usa Ubuntu)

Enviado em 23/01/2016 - 14:56h

Você está usando uma pilha para guardar cada caráter, o que o obriga a guardar caráter a caráter em ordem reversa. É isso mesmo que você quer? Não seria para guardar palavra a palavra? E por que pilha, em vez de fila, ou de lista ordenada?


4. resposta

joao
joaobahia

(usa Outra)

Enviado em 23/01/2016 - 17:30h

usando lista dinamica.


5. estar dando erro na hora de escluir o nome.

joao
joaobahia

(usa Outra)

Enviado em 23/01/2016 - 19:13h

#include<stdio.h>
#include<stdlib.h>

struct lista {
char info;
struct lista* prox;
struct lista* ant;
};
typedef struct lista Lista;



Lista* inicializa (void){
return NULL;
}



Lista* insere (Lista* l, char v){
Lista* novo = (Lista*) malloc(sizeof(Lista));
novo->info = v;
novo->prox = l;
novo->ant = NULL;

return novo;
}



void imprime (Lista* l){
Lista* p;
for (p = l; p != NULL; p = p->prox){
printf("%c", p->info);
}


}

Lista* busca (Lista* l, char v)
{
Lista* p;
for (p=l; p!=NULL; p=p->prox)
if(p->info == v)
return p;


return NULL;
}


Lista* retira (Lista* l, char v)
{
Lista* p = busca(l,v);

if (p == NULL)
return l;

if (l == p)
l = p-> prox;
else
p->ant->prox = p->prox;

if (p->prox != NULL)
p->prox->ant = p->ant;
free(p);
return l;



}


int main (void)
{
Lista* l;
//Lista* a;
printf("tres nomes: \n");
l = inicializa();
l = insere(l, 'A');
l = insere(l, 'S');
l = insere(l, 'O');
l = insere(l, 'R');
l = insere(l, 'D');
l = insere(l, 'E');
l = insere(l, 'P');
l = insere(l, ' ');
l = insere(l, 'A');
l = insere(l, 'H');
l = insere(l, 'N');
l = insere(l, 'O');
l = insere(l, 'R');
l = insere(l, 'O');
l = insere(l, 'N');
l = insere(l, ' ');
l = insere(l, 'O');
l = insere(l, 'D');
l = insere(l, 'L');
l = insere(l, 'E');
l = insere(l, 'I');
l = insere(l, 'C');
l = insere(l, 'N');
l = insere(l, 'A');
l = insere(l, 'R');
l = insere(l, 'F');

imprime(l);


busca (l, 'N');
busca (l, 'O');
busca (l, 'R');
busca (l, 'O');
busca (l, 'N');
busca (l, 'H');
busca (l, 'A');


printf("\n\ndois nomes : \n");

imprime(l);

return 0;
}







Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts