Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

sr.silva

Programinha basico em C, Ponteiros e Listas

Recommended Posts

#include <stdio.h>#include <malloc.h>#include <stdlib.h>/*Assunto .: Utilizando Ponteiros*/// definindo estrutura do notypedef struct Tno{  int valor;  struct Tno *prox;} Tno, *no;// definindo estrutura da listatypedef struct Tlista{  int tam;  no prim;  no ultimo;  no marcador;} Tlista, *lista;// Funcao para Inserir lista InsertLista( int elemento, lista l ){  no novo;  novo = (no) malloc( 1 * sizeof( Tno ) );  novo -> valor = elemento;  novo -> prox  = NULL;  if ( l -> tam == 0 )  {	l -> prim = novo;	l -> ultimo =  novo;	l -> marcador = novo;  }  if( l-> marcador != l-> ultimo )	{	  novo-> prox = l-> marcador-> prox;	  l-> marcador-> prox = novo;  	}  else	{	 l -> marcador -> prox = novo;	 novo -> prox = NULL;	 l -> ultimo = novo;	}  l -> marcador = novo;  l -> tam + 1;  return l;}//Funcao para Iniciar Listalista Inicia_Lista( lista l ){  l = (lista) malloc( 1 * sizeof( Tlista ) );	 l -> tam = 0;	 l -> prim = NULL;	 l -> ultimo =  NULL;	 l -> marcador = NULL;	return l;}//Funcao para Imprimir Listalista ImprimeLista( lista l ){  l-> marcador = l-> prim;  //  while( l -> marcador != NULL )  while ( l-> marcador-> prox != NULL )	{	  printf("%d\n", l-> marcador-> valor);	  l-> marcador = l-> marcador-> prox;   	}		return l;}//Programa Principalint main(){  int escolha=1;  int opcao = 0;  lista l;    while (escolha != 4)  {	printf("\n\n ----------------------- ");	printf("\n 1 - Inserir um elemento na lista ");	printf("\n 2 - Eliminar um elemento ");	printf("\n 3 - Imprimir a lista ");	printf("\n 4 - Sair do programa ");	printf("\n\n Escolha uma opcao: ");	scanf("%d",&escolha);  // estrutura switchswitch (escolha) {case 1:  {	printf("\n\n Digite um elemento para inserir na lista: ");	scanf("%d",&opcao); 	for(int i=0; i<opcao; i++)	 l = InsertLista(i, l);		break;	  }case 2:  {	printf("\n\n Eliminar um elemento:  ");	scanf("%d",&opcao);	break;  }case 3:  {	printf("\n\n Imprimir a lista: ");	scanf("%d",&opcao);		ImprimeLista(l);		break;  }case 4:  {	printf("\n\n O programa sera fechado em 5 segundos....");	system("close");  }default:  {	printf("\n\n Escolha uma opção do menu!");		  	  }		    }} //-----------  l = Inicia_Lista(l);  for(int i=0; i<10; i++)	l = InsertLista(i, l);	ImprimeLista(l);return(0);}

Estou com um problema na chamada das funcoes quando o usuario informa os mesmo

no menu...

Nao estou consigando por exemplo...quando o usuario infomar a opcao 1) ele tem que digitar

o elemento para inserir na lista e a opcao 3) tem que imprimir a lista de acordo com esse elemento informado, so que nao estou conseguindo fazer isso!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pra que esse for:for(int i=0; i<opcao; i++) l = InsertLista(i, l);Quando você vai inserir na lista, você só quer inserir o elemento escolhido, certo?Portanto basta: InsertLista(opcao,l). Bom, vê se isso funciona.Que problema ocorre na impressão?

#include <stdio.h>#include <malloc.h>#include <stdlib.h>/*Assunto .: Utilizando Ponteiros*/// definindo estrutura do notypedef struct Tno{  int valor;  struct Tno *prox;} Tno, *no;// definindo estrutura da listatypedef struct Tlista{  int tam;  no prim;  no ultimo;  no marcador;} Tlista, *lista;// Funcao para Inserir lista InsertLista( int elemento, lista l ){  no novo;  novo = (no) malloc( 1 * sizeof( Tno ) );  novo -> valor = elemento;  novo -> prox  = NULL;  if ( l -> tam == 0 )  {	l -> prim = novo;	l -> ultimo =  novo;	l -> marcador = novo;  }  if( l-> marcador != l-> ultimo )	{	  novo-> prox = l-> marcador-> prox;	  l-> marcador-> prox = novo;  	}  else	{	 l -> marcador -> prox = novo;	 novo -> prox = NULL;	 l -> ultimo = novo;	}  l -> marcador = novo;  l -> tam + 1;  return l;}//Funcao para Iniciar Listalista Inicia_Lista( lista l ){  l = (lista) malloc( 1 * sizeof( Tlista ) );	 l -> tam = 0;	 l -> prim = NULL;	 l -> ultimo =  NULL;	 l -> marcador = NULL;	return l;}//Funcao para Imprimir Listalista ImprimeLista( lista l ){  l-> marcador = l-> prim;  //  while( l -> marcador != NULL )  while ( l-> marcador-> prox != NULL )	{	  printf("%d\n", l-> marcador-> valor);	  l-> marcador = l-> marcador-> prox;   	}		return l;}//Programa Principalint main(){  int escolha=1;  int opcao = 0;  lista l;    while (escolha != 4)  {	printf("\n\n ----------------------- ");	printf("\n 1 - Inserir um elemento na lista ");	printf("\n 2 - Eliminar um elemento ");	printf("\n 3 - Imprimir a lista ");	printf("\n 4 - Sair do programa ");	printf("\n\n Escolha uma opcao: ");	scanf("%d",&escolha);  // estrutura switchswitch (escolha) {case 1:  {	printf("\n\n Digite um elemento para inserir na lista: ");	scanf("%d",&opcao); 	for(int i=0; i<opcao; i++)	 l = InsertLista(i, l);		break;	  }case 2:  {	printf("\n\n Eliminar um elemento:  ");	scanf("%d",&opcao);	break;  }case 3:  {	printf("\n\n Imprimir a lista: ");	scanf("%d",&opcao);		ImprimeLista(l);		break;  }case 4:  {	printf("\n\n O programa sera fechado em 5 segundos....");	system("close");  }default:  {	printf("\n\n Escolha uma opção do menu!");		  	  }		    }} //-----------  l = Inicia_Lista(l);  for(int i=0; i<10; i++)	l = InsertLista(i, l);	ImprimeLista(l);return(0);}
Estou com um problema na chamada das funcoes quando o usuario informa os mesmono menu...Nao estou consigando por exemplo...quando o usuario infomar a opcao 1) ele tem que digitar o elemento para inserir na lista e a opcao 3) tem que imprimir a lista de acordo com esse elemento informado, so que nao estou conseguindo fazer isso!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.