Estoy pasando un código de funciones que permiten agregar y eliminar elementos de una lista enlazada hacia "C" sin embargo me encontré con algo que no sé como reemplazar al declarar la función:
Este es el código en C++
Y en C
Código (c) [Seleccionar]
void insertarLista(Nodo *&lista,int n)
el "&" la referencia de la lista al quitarlo no hay error de sintaxis pero no funciona como debe de ser al emplear otra funcion "mostrar".Este es el código en C++
Código (cpp) [Seleccionar]
#include <iostream>
using namespace std;
struct Nodo{
int dato;
Nodo *siguiente;
};
void insertarLista(Nodo *&,int);
int main(int argc, char *argv[]) {
Nodo *lista = NULL;
int dato;
cout<<"Digite un numero: ";
cin>>dato;
insertarLista(lista,dato);
return 0;
}
void insertarLista(Nodo *&lista,int n){
Nodo *nuevo_nodo = new Nodo();
nuevo_nodo->dato = n;
Nodo *aux1 = lista;
Nodo *aux2;
while((aux1 != NULL) && (aux1->dato <n)){
aux2 = aux1;
aux1 = aux1->siguiente;
}
if(lista == aux1){
lista = nuevo_nodo;
}
else{
aux2->siguiente = nuevo_nodo;
}
nuevo_nodo->siguiente = aux1;
cout<<"\tElemento "<<n<<" insertado a la lista\n";
}
Y en C
Código (c) [Seleccionar]
#include <stdio.h>
#include <stdlib.h>
typedef struct Nodo{
int dato;
struct Nodo *siguiente;
}Nodo;
void insertarLista(Nodo *&,int);
int main(int argc, char *argv[]) {
Nodo *lista = NULL;
int dato;
printf("Digite un numero: ");
scanf("%d",&dato);
insertarLista(lista,dato);
return 0;
}
void insertarLista(Nodo *&lista,int n){
Nodo *nuevo_nodo = (Nodo*)malloc(sizeof(int));
nuevo_nodo->dato = n;
Nodo *aux1 = lista;
Nodo *aux2;
while((aux1 != NULL) && (aux1->dato <n)){
aux2 = aux1;
aux1 = aux1->siguiente;
}
if(lista == aux1){
lista = nuevo_nodo;
}
else{
aux2->siguiente = nuevo_nodo;
}
nuevo_nodo->siguiente = aux1;
printf("Elemento %d insertado a la lista\n",n);
}