/*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?
Pergunta
Zackk
Link para o comentário
Compartilhar em outros sites
0 respostass 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.