elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Introducción a Git (Primera Parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  [C]Equivalencia de una referencia de C++ a C?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [C]Equivalencia de una referencia de C++ a C?  (Leído 1,465 veces)
jorge.esquibel

Desconectado Desconectado

Mensajes: 2


Ver Perfil
[C]Equivalencia de una referencia de C++ a C?
« en: 19 Noviembre 2018, 09:01 am »

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:
Código
  1. 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
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. struct Nodo{
  5. int dato;
  6. Nodo *siguiente;
  7. };
  8. void insertarLista(Nodo *&,int);
  9.  
  10. int main(int argc, char *argv[]) {
  11. Nodo *lista = NULL;
  12. int dato;
  13.  
  14. cout<<"Digite un numero: ";
  15. cin>>dato;
  16.  
  17. insertarLista(lista,dato);
  18.  
  19. return 0;
  20. }
  21.  
  22. void insertarLista(Nodo *&lista,int n){
  23. Nodo *nuevo_nodo = new Nodo();
  24. nuevo_nodo->dato = n;
  25.  
  26. Nodo *aux1 = lista;
  27. Nodo *aux2;
  28.  
  29. while((aux1 != NULL) && (aux1->dato <n)){
  30. aux2 = aux1;
  31. aux1 = aux1->siguiente;
  32. }
  33. if(lista == aux1){
  34. lista = nuevo_nodo;
  35. }
  36. else{
  37. aux2->siguiente = nuevo_nodo;
  38. }
  39. nuevo_nodo->siguiente = aux1;
  40.  
  41. cout<<"\tElemento "<<n<<" insertado a la lista\n";
  42.  
  43. }

Y en C
Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. typedef struct Nodo{
  5. int dato;
  6. struct Nodo *siguiente;
  7. }Nodo;
  8.  
  9. void insertarLista(Nodo *&,int);
  10.  
  11. int main(int argc, char *argv[]) {
  12. Nodo *lista = NULL;
  13. int dato;
  14.  
  15. printf("Digite un numero: ");
  16. scanf("%d",&dato);
  17. insertarLista(lista,dato);
  18.  
  19.  
  20.  
  21. return 0;
  22. }
  23.  
  24. void insertarLista(Nodo *&lista,int n){
  25. Nodo *nuevo_nodo = (Nodo*)malloc(sizeof(int));
  26. nuevo_nodo->dato = n;
  27.  
  28. Nodo *aux1 = lista;
  29. Nodo *aux2;
  30.  
  31. while((aux1 != NULL) && (aux1->dato <n)){
  32. aux2 = aux1;
  33. aux1 = aux1->siguiente;
  34. }
  35. if(lista == aux1){
  36. lista = nuevo_nodo;
  37. }
  38. else{
  39. aux2->siguiente = nuevo_nodo;
  40. }
  41. nuevo_nodo->siguiente = aux1;
  42.  
  43. printf("Elemento %d insertado a la lista\n",n);
  44. }


En línea

CalgaryCorpus


Desconectado Desconectado

Mensajes: 323


Ver Perfil WWW
Re: [C]Equivalencia de una referencia de C++ a C?
« Respuesta #1 en: 19 Noviembre 2018, 14:24 pm »

La referencia para el caso funciona como una simplificacion de punteros y desreferenciaciones:

- Cambia en la definicion de la funcion para que reciba un puintero (quedaria Nodo **lista)
- En todas partes en que el codigo original de insertarLista en C++ que diga lista, en el de C pones *lista . (si llegas a omitir alguna, el programa va a fallar).
- En la invocacion de la funcion, en el main, donde dice lista, pones &lista.


« Última modificación: 20 Noviembre 2018, 01:36 am por CalgaryCorpus » En línea

Aqui mi perfil en LinkedIn, invitame un cafe aqui
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Equivalencia de Instrucciones
Programación Visual Basic
Krnl64 4 1,299 Último mensaje 30 Marzo 2006, 03:33 am
por Krnl64
equivalencia de odbc_result_all
PHP
ActiveSheet 1 1,517 Último mensaje 2 Mayo 2008, 05:10 am
por дٳŦ٭
Equivalencia C a ASM de una instrucción.
Electrónica
Meta 3 7,010 Último mensaje 19 Octubre 2008, 06:24 am
por MARCO_RECARGADO
Equivalencia a api
Programación Visual Basic
fary 0 1,355 Último mensaje 25 Junio 2010, 13:38 pm
por fary
Tipos de paso por referencia y paso por referencia de tipo apuntador
Programación C/C++
CATBro 3 3,433 Último mensaje 8 Abril 2012, 08:23 am
por Beakman
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines