Bem pessoal queira carregar uma lista dinamicamente encadeada com n caracteres, segue o que eu estou tentando fazer
#include <stdio.h>
#include <stdlib.h>
/*
CRIAR UMA LISTA ENCADEADA DINAMICAMENTE COM n CARACTERES E IMPRIMI-LOS NA TELA
*/
struct node //CRIA UMA ESTRUTURA PARA UMA FILA ENCADEADA QUE GUARDA UMA CARACTERE COMO INFORMAÇÃO
{
char info;
struct node *next;
};
typedef struct node *NODEPTR;
NODEPTR getnode()//CRIA UM NÓ (SÓ ALOCA O ESPAÇO DIMANICAMENTE) E RETORNA UM PONTEIRO PARA O NÓ CRIADO
{
NODEPTR p;
p=(NODEPTR)malloc(sizeof(struct node));
return p;
}
void insafter(NODEPTR p, char ch)//p É UM PONTEIRO PARA O INICIO DA LISTA, ASSIM INSERIMOS O CARACTERE ch DEPOIS DO NÓ
{ //QUE p APONTA
NODEPTR q;
if(p==NULL)
{
printf("Problema de Alocacao");
exit(1);
}
q=getnode();//CRIAMOS O NÓ (SEM NENHUMA INFORMAÇÃO)
q->info=ch;//GUARDAMOS O CARACTERE ch EM info
q->next=p->next;
p->next=p;
}
void imprime_lista(NODEPTR p)//RECEBE UM PONTEIRO p QUE APONTA PARA O INICIO DA LISTA
{
NODEPTR q=p;
while(q!=NULL)
{
printf("\n%c\n",q->info);
q=q->next;
}
}
NODEPTR insere_lista(int n)//CRIA UMA LISTA DINAMICAMENTE ENCADEADA COM n ELEMENTOS
{
NODEPTR p;
int i;
char ch;
for(i=1;i<=n;i++)
{
printf("Entre com o %d elemento da lista:",i);
scanf(" %c",&ch);
if(i==1)//NO PRIMEIRO ELEMENTO DA LISTA p->next APONTA PRA NULL
{
p=getnode();//CRIAMOS O NÓ (SEM NENHUMA INFORMAÇÃO)
p->info=ch;
p->next=NULL;
}
else//DEPOIS DO PRIMEIRO ELEMENTOS ENSERIMOS DEPOIS DELE
insafter(p,ch);
}
return p;
}
NODEPTR cria_no(char ch)
{
NODEPTR p;
p=getnode();
p->info=ch;
p->next=NULL;
return p;
}
int main()
{
NODEPTR p;
int n;
printf("Digite o tamanho da lista:");
scanf("%d",&n);
p=insere_lista(n);
imprime_lista(p);
return 0;
}
Uso essa mesma base para criar listas dinamicamente encadeadeadas com numeros inteiros, mas quando quis guardar caracteres na lista ao invés de inteiros não consigo carregar e nem imprimir a lista.
Pelo que eu pesquiser acho que pode ser uma erro no buffer do teclado, mas não consegui acertar.
Caso algém possa me ajudar, desde já agradeço a atenção.
Pergunta
Bruno Lugão
Bem pessoal queira carregar uma lista dinamicamente encadeada com n caracteres, segue o que eu estou tentando fazer
Uso essa mesma base para criar listas dinamicamente encadeadeadas com numeros inteiros, mas quando quis guardar caracteres na lista ao invés de inteiros não consigo carregar e nem imprimir a lista.
Pelo que eu pesquiser acho que pode ser uma erro no buffer do teclado, mas não consegui acertar.
Caso algém possa me ajudar, desde já agradeço a atenção.
Link para o comentário
Compartilhar em outros sites
1 resposta a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.