Ir para conteúdo
Fórum Script Brasil
  • 0

Como inserir um valor na posição desejada pelo usuário em uma lista si


Zackk

Pergunta

/*1) Implemente a função Lista *insere(Lista *l, int valor, int pos) que insere o elemento valor na posição pos da lista simplesmente encadeada.

Para isso, um novo nó deve ser alocado e ligado aos demais. O valor de pos é um número, que ser for 2, por exemplo, indica que o novo nó alocado será o segundo nó da lista. */

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



struct Lista{
    int info;
    int posi;
    struct Lista* prox; //prox recebe o endereço de memória do nó anterior da lista
};
typedef struct Lista lista;

lista* lst_cria(){
    return NULL;
}

lista* lst_insere(lista *l, int valor, int pos){
    if((pos - 1) > l -> posi){
        lista *novo = (lista*) malloc(sizeof(lista));
        novo -> prox = l;
        novo -> info = valor;
        novo -> posi++;
        printf("\nPosicao desejada inexistente!\nInserido na posicao %d\n",novo -> posi);
        return novo;
    }else{

    }
    system("pause");
    system("cls");
}

lista* lst_imprime(lista *l){
    system("cls");
    lista* p;
    for(p = l; p != NULL; p = p -> prox){
        printf("\nInfo = %d\n",p -> info);
    }
}


int main(){
    int pos, valor;
    Lista* l;
    l = lst_cria();
    l -> posi = 0;
    do{
        do{
            printf("\n\nInforme a posicao ou -1 para sair : ");
            scanf("%d",&pos);
            if(pos == -1){
                exit(0);
            }
            if(pos <= 0){
                printf("Valor invalido, Insira novamente\n\n");
            }else{
                printf("Informe o valor a ser inserido : ");
                scanf("%d",&valor);
            }
        }while(pos <= 0);
        lst_insere(l, valor, pos);
    }while(1);
    lst_imprime(l);
    system("pause");
    return 0;
}

Por favor alguém me ajude, eu fiz isso, mais não to conseguindo substituir a posição desejada pelo usuário, tipo quando ele pedir posição 2 e a lista tiver 3, eu pegar a 2 e colocar na 4 e o valor que ele deu na 2, entendeu?

Por favor me ajudem

Link para o comentário
Compartilhar em outros sites

0 respostass a esta questão

Posts Recomendados

Até agora não há respostas para essa pergunta

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.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...