Pessoal ,preciso de ajuda com 3 exercícios de lista encadeada, já tentei várias vezes mas nao consegui… preciso entregá-los amanha… Vou deixar o link com os exercícios e meu código. Se alguem puder fazer pra mim eu ficaria muito agradecido. Obrigado.
http://pastebin.com/pq3d70w3 << código e exercícios
Vou deixar o código e as questões aqui também:
1 - escreva uma função que concatene duas listas encadeadas, ou seja, no final da primeira lista colocar o endereço de memoria
do começo da proxima lista.
2 - troque a posição de duas celulas da lista;
3 - escreva uma função que inverta a a ordem das celulas de uma lista encadeada. A primeira posição passa a ser a ultima,
a segunda passa a ser a penultima e assim por diante.
#include <stdlib.h>
#include <stdio.h>
struct nodo{
int valor;
struct nodo *prox = NULL;
};
void inserir(struct nodo cabeca, struct nodo n){
struct nodo aux = cabeca;
while(aux.prox != NULL){
aux = *aux.prox;
}
aux.prox = &n;
}
struct nodo *buscar(struct nodo cabeca,int n){
struct nodo aux = cabeca;
while(aux.prox != NULL){
if(aux.valor == n){
return &aux;
}
aux = *aux.prox;
}
return NULL;
}
void remover(struct nodo cabeca,int valor){
if(cabeca.prox != NULL){
struct nodo aux = *cabeca.prox;
struct nodo ant = cabeca;
while(aux.valor != valor && aux.prox != NULL){
ant = aux;
aux= *aux.prox;
}
if(aux.valor == valor){
ant.prox = aux.prox;
free(&aux);
}
}
}
int main(){
struct nodo lista;
int v;
scanf("%d",&v);
struct nodo n1;
n1.valor = v;
inserir(lista,n1);
scanf("%d",&v);
struct nodo n2;
n2.valor = v;
inserir(lista,n2);
*buscar(lista,5);
return 0;
}