Quantcast
Channel: Programação - GUJ
Viewing all articles
Browse latest Browse all 33093

Lista Encadeada C

$
0
0

@Bruno_Casas escreveu:

Comecei a fazer um programa de lista encadeada, mas quando uso a função imprimir, ele não estava imprimindo nada, dai decobri que a LISTA depois que sai da função insere, ela volta a ter o valor NULL e eu não sei porque.

	#include <stdio.h>
	#include <stdlib.h>
	
	struct Node {
	 int num;
	 struct Node *prox;
	};
	typedef struct Node node;
	 
	node* aloca();
	void inicia(node *LISTA);
	void insere(node *LISTA, int val);
	void imprime(node *LISTA);
	
	int main(void) {
	  node *LISTA = NULL;
	  inicia(LISTA);
	  insere(LISTA, 10);
	  insere(LISTA, 20);
	  insere(LISTA, 5);
	  imprime(LISTA);
	
	  return 0;
	}
	
	node* aloca() {
	  node *LISTA = (node *)malloc(sizeof(node));
	  return(LISTA);
	}
	
	void inicia(node *LISTA) {
	  LISTA = NULL;
	}
	
	void insere(node *LISTA, int val) {
	  node *p1 = aloca();
	  node *p2;
	  
	  p1->num = val;
	  p1->prox = NULL;
	
	  if (LISTA == NULL) {
	    LISTA = p1;
	  }else {
	    p2 = LISTA;
	    while (p2->prox != NULL) {
	      p2 = p2->prox;
	      p2->prox = p1;
	    }
	  }
	}
	
	void imprime(node *LISTA) {
	  node *tmp;
	  tmp = LISTA;
	  while(tmp != NULL) {
	    printf("%d", tmp->num);
	    tmp = tmp->prox;
	  }
	}

Mensagens: 7

Participantes: 2

Ler tópico completo


Viewing all articles
Browse latest Browse all 33093


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>