sr.silva 1 Denunciar post Postado Junho 11, 2006 #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
Pablo Andrade 0 Denunciar post Postado Junho 15, 2006 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