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

 

 


Tema destacado:


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Listas enlazadas por punteros (SOLUCIONADO)
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Listas enlazadas por punteros (SOLUCIONADO)  (Leído 510 veces)
berbash116

Desconectado Desconectado

Mensajes: 8


Ver Perfil
Listas enlazadas por punteros (SOLUCIONADO)
« en: 3 Enero 2019, 01:30 am »

que tal, tengo una tarea en donde me piden: "elaborar un programa para anotar en una lista enlazada
 por punteros, el voltaje y la corriente a través de los componentes de un circuito de n componentes resistivos puros, calculando cada vez el valor de la resistencia correspondiente"

tengo hecho un programa en el cual puedo ingresar estas n variables y hacer el calculo para que me de la resistencia como resultado, mi problema es que no entiendo como hacer una lista enlazada por punteros, ojala puedan ayudarme.

les dejo el programa que hice:

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

using std::cin;
using std::cout;

main ()
{
   int n,i;
   float r,v,c;
   
   cout << "\ningrese cantidad de resistencias a calcular   : \n";
   cin>> n;
   
   for(i=1;i<=n;i++)
   {
      cout<<"\ningrese tension "<< i<<":"<<"\n";
      cin>> v;
      cout<< "\ningrese corriente "<< i<<":"<<"\n";
      cin>> c;
      
      r= (v/c);
      
      cout<< "el resultado de la resistencia R "<< i << "   es  :"<< r<<"\n";
      
   }
   system ("pause");
   return 0;
}


« Última modificación: 4 Enero 2019, 03:44 am por berbash116 » En línea

Beginner Web


Desconectado Desconectado

Mensajes: 587


youtu.be/0YhflLRE-DA


Ver Perfil
Re: Listas enlazadas por punteros
« Respuesta #1 en: 3 Enero 2019, 01:59 am »

Código
  1. //Lista simple con un puntero
  2. #include <iostream>
  3. #include <stdlib.h>
  4.  
  5. using namespace std;
  6.  
  7. typedef struct tnodo *pnodo;
  8. typedef struct tnodo{
  9. int dato;//Aca tambien puede ir un tipo de dato estructurado
  10. pnodo sig;
  11. };
  12.  
  13. void iniciar_lista(pnodo &lista);
  14. void crear_nodo(pnodo &nuevo);
  15. void agregar_inicio(pnodo &lista, pnodo nuevo);
  16. void agregar_final(pnodo &lista, pnodo nuevo);
  17. void agregar_orden(pnodo &lista, pnodo nuevo);
  18. pnodo quitar_inicio(pnodo &lista);
  19. pnodo quitar_final(pnodo &lista);
  20. pnodo quitar_nodo(pnodo &lista, int buscado);
  21. bool buscar_nodo(pnodo lista, int buscado);
  22. void mostrar_lista(pnodo lista);
  23.  
  24. int main()
  25. {
  26. int opcion, buscado;
  27. pnodo milista, nuevo, eliminado;
  28. iniciar_lista(milista);
  29. do{
  30. system("cls");
  31. cout<<"1. Agregar al inicio"<<endl;
  32. cout<<"2. Agregar al final"<<endl;
  33. cout<<"3. Agregar en orden"<<endl;
  34. cout<<"4. Quitar inicio"<<endl;
  35. cout<<"5. Quitar final"<<endl;
  36. cout<<"6. Quitar nodo"<<endl;
  37. cout<<"7. Buscar nodo"<<endl;
  38. cout<<"8. Mostrar lista"<<endl;
  39. cout<<"9. Salir"<<endl;
  40. cin>>opcion;
  41. switch(opcion){
  42. case 1: crear_nodo(nuevo);
  43. if(nuevo!=NULL)
  44. agregar_inicio(milista,nuevo);
  45. break;
  46. case 2: crear_nodo(nuevo);
  47. if(nuevo!=NULL)
  48. agregar_final(milista,nuevo);
  49. break;
  50. case 3: crear_nodo(nuevo);
  51. if(nuevo!=NULL)
  52. agregar_orden(milista,nuevo);
  53. break;
  54. case 4: eliminado=quitar_inicio(milista);
  55. if(eliminado!=NULL){
  56. cout<<"Eliminado: "<<eliminado->dato<<endl;
  57. delete(eliminado);
  58. }
  59. else
  60. cout<<"NO SE PUEDE ELIMINAR, LISTA VACIA"<<endl;
  61. break;
  62. case 5: eliminado=quitar_final(milista);
  63. if(eliminado!=NULL){
  64. cout<<"Eliminado: "<<eliminado->dato<<endl;
  65. delete(eliminado);
  66. }
  67. else
  68. cout<<"NO SE PUEDE ELIMINAR, LISTA VACIA"<<endl;
  69. break;
  70. case 6: cout<<"Ingrese valor buscado: ";
  71. cin>>buscado;
  72. eliminado=quitar_nodo(milista,buscado);
  73. if(eliminado!=NULL){
  74. cout<<"Eliminado: "<<eliminado->dato<<endl;
  75. delete(eliminado);
  76. }
  77. else
  78. cout<<"NO SE PUDO ELIMINAR, VALOR NO ENCONTRADO"<<endl;
  79. break;
  80. case 7: cout<<"Ingrese valor buscado: ";
  81. cin>>buscado;
  82. if(buscar_nodo(milista,buscado)==true)
  83. cout<<"Encontrado"<<endl;
  84. else
  85. cout<<"VALOR NO ENCONTRADO"<<endl;
  86. break;
  87. case 8: mostrar_lista(milista);break;
  88. case 9: cout<<"FIN DEL PROGRAMA"<<endl;break;
  89. default: cout<<"Opcion incorrecta"<<endl;
  90. }
  91. system("pause");
  92. }while(opcion!=9);
  93. return 0;
  94. }
  95.  
  96. void iniciar_lista(pnodo &lista)
  97. {
  98. lista=NULL;
  99. }
  100.  
  101. void crear_nodo(pnodo &nuevo)
  102. {
  103. nuevo=new tnodo;
  104. if(nuevo!=NULL){
  105. cout<<"Ingrese dato: ";
  106. cin>>nuevo->dato;
  107. nuevo->sig=NULL;
  108. }
  109. else
  110. cout<<"MEMORIA INSUFICIENTE"<<endl;
  111. }
  112.  
  113. void agregar_inicio(pnodo &lista, pnodo nuevo)
  114. {
  115. if(lista==NULL)
  116. lista=nuevo;
  117. else{
  118. nuevo->sig=lista;
  119. lista=nuevo;
  120. }
  121. }
  122.  
  123. void agregar_final(pnodo &lista, pnodo nuevo)
  124. {
  125. pnodo i;
  126. if(lista==NULL)
  127. lista=nuevo;
  128. else{
  129. for(i=lista;i->sig!=NULL;i=i->sig);
  130. i->sig=nuevo;
  131. }
  132. }
  133.  
  134. void agregar_orden(pnodo &lista, pnodo nuevo)
  135. {
  136. pnodo i;
  137. if(lista==NULL)
  138. lista=nuevo;
  139. else{
  140. if(nuevo->dato<lista->dato){
  141. nuevo->sig=lista;
  142. lista=nuevo;
  143. }
  144. else{
  145. for(i=lista;i->sig!=NULL && nuevo->dato>(i->sig)->dato;i=i->sig);
  146. nuevo->sig=i->sig;
  147. i->sig=nuevo;
  148. }
  149. }
  150. }
  151.  
  152. pnodo quitar_inicio(pnodo &lista)
  153. {
  154. pnodo borrado;
  155. if(lista==NULL)
  156. borrado=NULL;
  157. else{
  158. borrado=lista;
  159. lista=borrado->sig;
  160. borrado->sig=NULL;
  161. }
  162. return borrado;
  163. }
  164.  
  165. pnodo quitar_final(pnodo &lista)
  166. {
  167. pnodo i, borrado;
  168. if(lista==NULL)
  169. borrado=NULL;
  170. else{
  171. if(lista->sig==NULL){
  172. borrado=lista;
  173. lista=NULL;
  174. }
  175. else{
  176. for(i=lista;(i->sig)->sig!=NULL;i=i->sig);
  177. borrado=i->sig;
  178. i->sig=NULL;
  179. }
  180. }
  181. return borrado;
  182. }
  183.  
  184. pnodo quitar_nodo(pnodo &lista, int buscado)
  185. {
  186. pnodo i, borrado;
  187. if(lista==NULL)
  188. borrado=NULL;
  189. else{
  190. if(buscado==lista->dato){
  191. borrado=lista;
  192. lista=borrado->sig;
  193. borrado->sig=NULL;
  194. }
  195. else{
  196. for(i=lista;i->sig!=NULL && buscado!=(i->sig)->dato;i=i->sig);
  197. if(i->sig!=NULL){
  198. borrado=i->sig;
  199. i->sig=borrado->sig;
  200. borrado->sig=NULL;
  201. }
  202. else
  203. borrado=NULL;
  204. }
  205. }
  206. return borrado;
  207. }
  208.  
  209. bool buscar_nodo(pnodo lista, int buscado)
  210. {
  211. pnodo i;
  212. bool encontrado=false;
  213. if(lista!=NULL){
  214. for(i=lista;i!=NULL && encontrado==false;i=i->sig)
  215. if(buscado==i->dato)
  216. encontrado=true;
  217. }
  218. return encontrado;
  219. }
  220.  
  221. void mostrar_lista(pnodo lista)
  222. {
  223. pnodo i;
  224. if(lista!=NULL){
  225. for(i=lista;i!=NULL;i=i->sig)
  226. cout<<i->dato<<"->";
  227. cout<<"NULL"<<endl;
  228. }
  229. else
  230. cout<<"LISTA VACIA"<<endl;
  231. }
  232.  
  233.  

Código
  1. //Lista simple con 2 punteros
  2. #include <iostream>
  3. #include <stdlib.h>
  4.  
  5. using namespace std;
  6.  
  7. typedef struct tnodo *pnodo;
  8. typedef struct tnodo{
  9. int dato;
  10. pnodo sig;
  11. };
  12. typedef struct tlista{
  13. pnodo inicio;
  14. pnodo final;
  15. };
  16.  
  17. void iniciar_lista(tlista &lista);
  18. void crear_nodo(pnodo &nuevo);
  19. void agregar_inicio(tlista &lista, pnodo nuevo);
  20. void agregar_final(tlista &lista, pnodo nuevo);
  21. void agregar_orden(tlista &lista, pnodo nuevo);
  22. pnodo quitar_inicio(tlista &lista);
  23. pnodo quitar_final(tlista &lista);
  24. pnodo quitar_nodo(tlista &lista, int buscado);
  25. bool buscar_nodo(tlista lista, int buscado);
  26. void mostrar_lista(tlista lista);
  27.  
  28. int main()
  29. {
  30. int opcion, buscado;
  31. tlista milista;
  32. pnodo nuevo, eliminado;
  33. iniciar_lista(milista);
  34. do{
  35. system("cls");
  36. cout<<"1. Agregar al inicio"<<endl;
  37. cout<<"2. Agregar al final"<<endl;
  38. cout<<"3. Agregar en orden"<<endl;
  39. cout<<"4. Quitar inicio"<<endl;
  40. cout<<"5. Quitar final"<<endl;
  41. cout<<"6. Quitar nodo"<<endl;
  42. cout<<"7. Buscar nodo"<<endl;
  43. cout<<"8. Mostrar lista"<<endl;
  44. cout<<"9. Salir"<<endl;
  45. cin>>opcion;
  46. switch(opcion){
  47. case 1: crear_nodo(nuevo);
  48. if(nuevo!=NULL)
  49. agregar_inicio(milista,nuevo);
  50. break;
  51. case 2: crear_nodo(nuevo);
  52. if(nuevo!=NULL)
  53. agregar_final(milista,nuevo);
  54. break;
  55. case 3: crear_nodo(nuevo);
  56. if(nuevo!=NULL)
  57. agregar_orden(milista,nuevo);
  58. break;
  59. case 4: eliminado=quitar_inicio(milista);
  60. if(eliminado!=NULL){
  61. cout<<"Eliminado: "<<eliminado->dato<<endl;
  62. delete(eliminado);
  63. }
  64. else
  65. cout<<"NO SE PUEDE ELIMINAR, LISTA VACIA"<<endl;
  66. break;
  67. case 5: eliminado=quitar_final(milista);
  68. if(eliminado!=NULL){
  69. cout<<"Eliminado: "<<eliminado->dato<<endl;
  70. delete(eliminado);
  71. }
  72. else
  73. cout<<"NO SE PUEDE ELIMINAR, LISTA VACIA"<<endl;
  74. break;
  75. case 6: cout<<"Ingrese valor buscado: ";
  76. cin>>buscado;
  77. eliminado=quitar_nodo(milista,buscado);
  78. if(eliminado!=NULL){
  79. cout<<"Eliminado: "<<eliminado->dato<<endl;
  80. delete(eliminado);
  81. }
  82. else
  83. cout<<"NO SE PUDO ELIMINAR, VALOR NO ENCONTRADO"<<endl;
  84. break;
  85. case 7: cout<<"Ingrese valor buscado: ";
  86. cin>>buscado;
  87. if(buscar_nodo(milista,buscado)==true)
  88. cout<<"Encontrado"<<endl;
  89. else
  90. cout<<"VALOR NO ENCONTRADO"<<endl;
  91. break;
  92. case 8: mostrar_lista(milista);break;
  93. case 9: cout<<"FIN DEL PROGRAMA"<<endl;break;
  94. default: cout<<"Opcion incorrecta"<<endl;
  95. }
  96. system("pause");
  97. }while(opcion!=9);
  98. return 0;
  99. }
  100.  
  101. void iniciar_lista(tlista &lista)
  102. {
  103. lista.inicio=NULL;
  104. lista.final=NULL;
  105. }
  106.  
  107. void crear_nodo(pnodo &nuevo)
  108. {
  109. nuevo=new tnodo;
  110. if(nuevo!=NULL){
  111. cout<<"Ingrese dato: ";
  112. cin>>nuevo->dato;
  113. nuevo->sig=NULL;
  114. }
  115. else
  116. cout<<"MEMORIA INSUFICIENTE"<<endl;
  117. }
  118.  
  119. void agregar_inicio(tlista &lista, pnodo nuevo)
  120. {
  121. if(lista.inicio==NULL){
  122. lista.inicio=nuevo;
  123. lista.final=nuevo;
  124. }
  125. else{
  126. nuevo->sig=lista.inicio;
  127. lista.inicio=nuevo;
  128. }
  129. }
  130.  
  131. void agregar_final(tlista &lista, pnodo nuevo)
  132. {
  133. if(lista.inicio==NULL){
  134. lista.inicio=nuevo;
  135. lista.final=nuevo;
  136. }
  137. else{
  138. lista.final->sig=nuevo;
  139. lista.final=nuevo;
  140. }
  141. }
  142.  
  143. void agregar_orden(tlista &lista, pnodo nuevo)
  144. {
  145. pnodo i;
  146. if(lista.inicio==NULL){
  147. lista.inicio=nuevo;
  148. lista.final=nuevo;
  149. }
  150. else{
  151. if(nuevo->dato<lista.inicio->dato){
  152. nuevo->sig=lista.inicio;
  153. lista.inicio=nuevo;
  154. }
  155. else{
  156. if(nuevo->dato>lista.final->dato){
  157. lista.final->sig=nuevo;
  158. lista.final=nuevo;
  159. }
  160. else{
  161. for(i=lista.inicio;i->sig!=NULL && nuevo->dato>(i->sig)->dato;i=i->sig);
  162. nuevo->sig=i->sig;
  163. i->sig=nuevo;
  164. }
  165. }
  166. }
  167. }
  168.  
  169. pnodo quitar_inicio(tlista &lista)
  170. {
  171. pnodo borrado;
  172. if(lista.inicio==NULL)
  173. borrado=NULL;
  174. else{
  175. if(lista.inicio==lista.final){
  176. borrado=lista.inicio;
  177. lista.inicio=NULL;
  178. lista.final=NULL;
  179. }
  180. else{
  181. borrado=lista.inicio;
  182. lista.inicio=borrado->sig;
  183. borrado->sig=NULL;
  184. }
  185. }
  186. return borrado;
  187. }
  188.  
  189. pnodo quitar_final(tlista &lista)
  190. {
  191. pnodo i, borrado;
  192. if(lista.inicio==NULL)
  193. borrado=NULL;
  194. else{
  195. if(lista.inicio==lista.final){
  196. borrado=lista.inicio;
  197. lista.inicio=NULL;
  198. lista.final=NULL;
  199. }
  200. else{
  201. for(i=lista.inicio;(i->sig)->sig!=NULL;i=i->sig);
  202. borrado=lista.final;
  203. lista.final=i;
  204. lista.final->sig=NULL;
  205. }
  206. }
  207. return borrado;
  208. }
  209.  
  210. pnodo quitar_nodo(tlista &lista, int buscado)
  211. {
  212. pnodo i, borrado;
  213. if(lista.inicio==NULL)
  214. borrado=NULL;
  215. else{
  216. if(lista.inicio==lista.final){
  217. if(buscado==lista.inicio->dato){
  218. borrado=lista.inicio;
  219. lista.inicio=NULL;
  220. lista.final=NULL;
  221. }
  222. else
  223. borrado=NULL;
  224. }
  225. else{
  226. if(buscado==lista.inicio->dato)
  227. borrado=quitar_inicio(lista);
  228. else{
  229. if(buscado==lista.final->dato)
  230. borrado=quitar_final(lista);
  231. else{
  232. for(i=lista.inicio;i->sig!=NULL && buscado!=(i->sig)->dato;i=i->sig);
  233. if(i->sig!=NULL){
  234. borrado=i->sig;
  235. i->sig=borrado->sig;
  236. borrado->sig=NULL;
  237. }
  238. else
  239. borrado=NULL;
  240. }
  241. }
  242. }
  243. }
  244. return borrado;
  245. }
  246.  
  247. bool buscar_nodo(tlista lista, int buscado)
  248. {
  249. pnodo i;
  250. bool encontrado=false;
  251. if(lista.inicio!=NULL){
  252. for(i=lista.inicio;i!=NULL && encontrado==false;i=i->sig)
  253. if(buscado==i->dato)
  254. encontrado=true;
  255. }
  256. return encontrado;
  257. }
  258.  
  259. void mostrar_lista(tlista lista)
  260. {
  261. pnodo i;
  262. if(lista.inicio!=NULL){
  263. for(i=lista.inicio;i!=NULL;i=i->sig)
  264. cout<<i->dato<<"->";
  265. cout<<"NULL"<<endl;
  266. }
  267. else
  268. cout<<"LISTA VACIA"<<endl;
  269. }
  270.  

Hay mas listas, simple circular, doble con 1 puntero, doble con 2 punteros, circular doble y otras que no recuerdo :D


« Última modificación: 3 Enero 2019, 02:09 am por Beginner Web » En línea

{_id: "5ef16999f6ce240abc225ss3",
nombre: "Ana Keldysh",
nacionalidad: "Argentina",
edad: "17",
profesion: "Desarrollador Web Full Stack, pero la verdad hago de todo.",
"__v": 0
}
berbash116

Desconectado Desconectado

Mensajes: 8


Ver Perfil
Re: Listas enlazadas por punteros
« Respuesta #2 en: 3 Enero 2019, 02:05 am »

gracias igual me hacen falta jajajaj pero como puedo agregarlo al programa que ya tengo
es copiar y pegar o tengo que arreglarlo de algun modo??
En línea

Beginner Web


Desconectado Desconectado

Mensajes: 587


youtu.be/0YhflLRE-DA


Ver Perfil
Re: Listas enlazadas por punteros
« Respuesta #3 en: 3 Enero 2019, 02:18 am »

Bueno si es asi, la definicion de la estructura cambiaria a:

Código
  1. typedef struct tnodo *pnodo;
  2. typedef struct tnodo{
  3. float dato;
  4. pnodo sig;
  5. };

Y modificar el modulo de crear_nodo a:
Código
  1. void crear_nodo(pnodo &nuevo, float valor)
  2. {
  3. nuevo=new tnodo;
  4. if(nuevo!=NULL){
  5. nuevo->dato=valor;
  6. nuevo->sig=NULL;
  7. }
  8. else
  9. cout<<"MEMORIA INSUFICIENTE"<<endl;
  10. }

Y crear un modulo para agregar las resistencias calculadas en una lista simplemente enlazada con 1 puntero

Código
  1. void agregar_resistencias(tlista &lista)
  2. {
  3. int n,i;
  4. float r,v,c;
  5. pnodo nuevo;
  6. cout<<"Ingrese cantidad de resistencias a calcular: ";
  7. cin>>n;
  8. for(i=1;i<=n;i++){
  9.       cout<<"Ingrese tension "<<i<<": "<<endl;
  10.       cin>>v;
  11.       cout<<"Ingrese corriente "<<i<<": "<<endl;
  12.           cin>>c;
  13.         r=(v/c);
  14.         cout<<"El resultado de la resistencia R "<<i<<" es: "<<r<<endl;
  15.         crear_nodo(nuevo,r);
  16.           if(nuevo!=NULL)
  17.       agregar_final(lista,nuevo);
  18.   }
  19. }

« Última modificación: 3 Enero 2019, 07:17 am por Beginner Web » En línea

{_id: "5ef16999f6ce240abc225ss3",
nombre: "Ana Keldysh",
nacionalidad: "Argentina",
edad: "17",
profesion: "Desarrollador Web Full Stack, pero la verdad hago de todo.",
"__v": 0
}
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Listas enlazadas en c++
Programación C/C++
N3r0 3 7,427 Último mensaje 13 Julio 2010, 12:42 pm
por N3r0
[C] Listas enlazadas.
Programación C/C++
The Swash 5 29,897 Último mensaje 26 Octubre 2011, 04:56 am
por brians444
listas enlazadas
Programación C/C++
javier210186 3 1,849 Último mensaje 25 Octubre 2011, 02:33 am
por javier210186
listas enlazadas
Programación C/C++
alejandroimparable 0 963 Último mensaje 3 Octubre 2017, 07:25 am
por alejandroimparable
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines