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

 

 


Tema destacado: Rompecabezas de Bitcoin, Medio millón USD en premios


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

Desconectado Desconectado

Mensajes: 1


Ver Perfil
Listas - Ayuda porfavor [Dev C++]
« en: 7 Junio 2011, 23:24 pm »

Buenas tardes.

Amigos alguien de buena voluntad podria ayudarme con una duda ya que mi profesor se niega a ayudarme y no tengo con quien apoyarme y no encuentro lo nesesario en tutoriales.

Problema: Debo crear un Menu de opciones, Crear nodo, Eliminar nodo, Mostrar nodos, Salir.

Tengo todo hecho pero la idea es que al crear el nodo salgan 3 opciones mas:
Insertar al inicio, Insertar entre (num,num) y insertar alfinal. Eso es lo que me tiene complicado como hacerlo con listas... tengo todo el codigo hecho en Dev C++ lo dejo por siacaso... estoy muy complicado


La más complicada es insertar entre (num,num) alguna idea? talvez modificando las funciones... lo intente y nada u.u

Código
  1. #include <stdlib.h>
  2. #include <conio.h>
  3. #include <stdio.h>
  4. #include<windows.h>
  5.  
  6. typedef struct _nodo {
  7. int dato;
  8. struct _nodo *siguiente;
  9. } tiponodo;
  10. typedef tiponodo *pnodo;
  11. typedef tiponodo *Lista;
  12.  
  13.  
  14. void Insertar(Lista *l, int v);
  15. void Borrar(Lista *l, int v);
  16. void BorrarLista(Lista *);
  17. void MostrarLista(Lista l);
  18.  
  19.  
  20. main(){
  21.  
  22.   system("Color 1A");
  23.   Lista lista = NULL;
  24.   pnodo p;
  25.   int i=0; //Contador para agregar nodos
  26.   int nusuario=0;
  27.   int nborrar=0;
  28.   int ciclo=1;
  29.   int op=0;
  30.   int ops=0;
  31.  
  32.       while(ciclo==1){
  33.  
  34.          printf("**********  MENU  **********\n\n\n\n");
  35.          printf(" 1) Crear nodo \n");
  36.          printf(" 2) Eliminar\n");
  37.          printf(" 3) Mostrar\n");
  38.          printf(" 4) Salir\n\n\n\n\n");
  39.  
  40.          printf("Opcion: ");
  41.          scanf("%d",&op);
  42.          system("cls");
  43.  
  44.          if(op==1){
  45.  
  46.             printf("\n\n 1) Insertar al inicio \n");
  47.             printf(" 2) Insertar al medio\n");
  48.             printf(" 3) Insertar al final\n");
  49.             printf("Opcion:");
  50.             scanf("%d",&ops);
  51.  
  52.             if(ops==1){
  53.                 system("cls");
  54.                 printf("nada");
  55.             }
  56.  
  57.         i=i+1; //Contador que indicara la cantidad de numeros ingresados
  58.             printf(" \nIngrese un numero %d: ",i);
  59.             scanf("%d",&nusuario);
  60.             Insertar(&lista, nusuario);
  61.  
  62.          }
  63.  
  64.      if(op==2){
  65.  
  66.             printf("\n Ingrese numero que desea borrar: ");
  67.     scanf("%d",&nborrar);
  68.     Borrar(&lista,nborrar);
  69.  
  70.          }
  71.  
  72.      if(op==3){
  73.  
  74.     MostrarLista(lista);
  75.             getchar();
  76.      }
  77.  
  78.      if(op==5){
  79.  
  80.     ciclo=2;
  81.  
  82.          }
  83.  getchar();
  84.  
  85.      }
  86.  
  87. }
  88.  
  89.  
  90.  
  91. void Insertar(Lista *lista, int v){
  92.  
  93.    pnodo nodo;
  94.    nodo = (pnodo)malloc(sizeof(tiponodo));
  95.    nodo->dato = v;
  96.    if(*lista == NULL) *lista = nodo;
  97.    else nodo->siguiente = (*lista)->siguiente;
  98.    (*lista)->siguiente = nodo;
  99.  
  100. }
  101.  
  102. void Borrar(Lista *lista, int v){
  103.    pnodo nodo;
  104.    nodo = *lista;
  105.    do{
  106.  
  107.   if((*lista)->siguiente->dato != v) *lista = (*lista)->siguiente;
  108.  
  109.    }while((*lista)->siguiente->dato != v && *lista != nodo);
  110.  
  111.    if((*lista)->siguiente->dato == v){
  112.   if(*lista == (*lista)->siguiente){
  113.  free(*lista);
  114.  *lista = NULL;
  115.   }
  116.       else{
  117.      nodo = (*lista)->siguiente;
  118.      (*lista)->siguiente = nodo->siguiente;
  119.      free(nodo);
  120.       }
  121.    }
  122. }
  123.  
  124. void BorrarLista(Lista *lista){
  125.    pnodo nodo;
  126. while((*lista)->siguiente != *lista) {
  127. nodo = (*lista)->siguiente;
  128. (*lista)->siguiente = nodo->siguiente;
  129. free(nodo);
  130. }
  131. free(*lista);
  132. *lista = NULL;
  133. }
  134.  
  135. void MostrarLista(Lista lista){
  136.    pnodo nodo = lista;
  137. do {
  138.   printf("%d -> ", nodo->dato);
  139.   nodo = nodo->siguiente;
  140. } while(nodo != lista);
  141. printf("\n");
  142. }

De antemano gracias


« Última modificación: 7 Junio 2011, 23:28 pm por Lokirs » En línea

Don Pollo

Desconectado Desconectado

Mensajes: 74

/* No comments */


Ver Perfil
Re: Listas - Ayuda porfavor [Dev C++]
« Respuesta #1 en: 8 Junio 2011, 12:20 pm »

Para insertar entre el nodo1 y el nodo2 lo que debes hacer es crear un nuevo nodo3 y hacer que el puntero de éste apunte al mismo sitio donde apunta el nodo1, depués haces que el puntero del nodo1 apunte al nuevo nodo3 y ya tienes tu nuevo nodo metido en medio de los dos anteriores.

Es importante que lo hagas en el orden que te he dicho ya que si no se perdería el puntero que apunta al nodo2 y la lista se partiría en dos.


En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Uso de Listas: Subprograma que lea 2 listas y forme una.
Dudas Generales
hbenitez 2 3,316 Último mensaje 8 Agosto 2010, 20:11 pm
por hbenitez
Ayuda Acerca De Listas y Listas Circulares (Revienta Memoria :S)
Programación C/C++
Gerik 0 5,180 Último mensaje 12 Septiembre 2010, 01:49 am
por Gerik
Listas y Sublistas..Ayuda!!
Programación C/C++
willy1855 2 5,967 Último mensaje 9 Mayo 2012, 16:40 pm
por durasno
relacionar 2 listas en VB 6.. ayuda!!!!
Programación Visual Basic
euphemia 2 2,044 Último mensaje 22 Octubre 2012, 14:56 pm
por seba123neo
Ayuda con Multi Listas POO C++
Programación C/C++
hyperiod 1 6,512 Último mensaje 17 Septiembre 2013, 09:17 am
por eferion
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines