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
De antemano gracias
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 (cpp) [Seleccionar]
#include <stdlib.h>
#include <conio.h>
#include <stdio.h>
#include<windows.h>
typedef struct _nodo {
int dato;
struct _nodo *siguiente;
} tiponodo;
typedef tiponodo *pnodo;
typedef tiponodo *Lista;
void Insertar(Lista *l, int v);
void Borrar(Lista *l, int v);
void BorrarLista(Lista *);
void MostrarLista(Lista l);
main(){
system("Color 1A");
Lista lista = NULL;
pnodo p;
int i=0; //Contador para agregar nodos
int nusuario=0;
int nborrar=0;
int ciclo=1;
int op=0;
int ops=0;
while(ciclo==1){
printf("********** MENU **********\n\n\n\n");
printf(" 1) Crear nodo \n");
printf(" 2) Eliminar\n");
printf(" 3) Mostrar\n");
printf(" 4) Salir\n\n\n\n\n");
printf("Opcion: ");
scanf("%d",&op);
system("cls");
if(op==1){
printf("\n\n 1) Insertar al inicio \n");
printf(" 2) Insertar al medio\n");
printf(" 3) Insertar al final\n");
printf("Opcion:");
scanf("%d",&ops);
if(ops==1){
system("cls");
printf("nada");
}
i=i+1; //Contador que indicara la cantidad de numeros ingresados
printf(" \nIngrese un numero %d: ",i);
scanf("%d",&nusuario);
Insertar(&lista, nusuario);
}
if(op==2){
printf("\n Ingrese numero que desea borrar: ");
scanf("%d",&nborrar);
Borrar(&lista,nborrar);
}
if(op==3){
MostrarLista(lista);
getchar();
}
if(op==5){
ciclo=2;
}
getchar();
}
}
void Insertar(Lista *lista, int v){
pnodo nodo;
nodo = (pnodo)malloc(sizeof(tiponodo));
nodo->dato = v;
if(*lista == NULL) *lista = nodo;
else nodo->siguiente = (*lista)->siguiente;
(*lista)->siguiente = nodo;
}
void Borrar(Lista *lista, int v){
pnodo nodo;
nodo = *lista;
do{
if((*lista)->siguiente->dato != v) *lista = (*lista)->siguiente;
}while((*lista)->siguiente->dato != v && *lista != nodo);
if((*lista)->siguiente->dato == v){
if(*lista == (*lista)->siguiente){
free(*lista);
*lista = NULL;
}
else{
nodo = (*lista)->siguiente;
(*lista)->siguiente = nodo->siguiente;
free(nodo);
}
}
}
void BorrarLista(Lista *lista){
pnodo nodo;
while((*lista)->siguiente != *lista) {
nodo = (*lista)->siguiente;
(*lista)->siguiente = nodo->siguiente;
free(nodo);
}
free(*lista);
*lista = NULL;
}
void MostrarLista(Lista lista){
pnodo nodo = lista;
do {
printf("%d -> ", nodo->dato);
nodo = nodo->siguiente;
} while(nodo != lista);
printf("\n");
}
De antemano gracias