borrar nodo ayuda :(

#1
hola amigos espero q la esten pasando rebien ... queria pedirles su ayuda algo sencillo para ustedes me imanido XD--- bueno el asunto es este no logro que este programa me borre el nodo deciado en cambio me borra toda la lista , no le hagan caso a las variables que no se usan jajaja.... esque primero queria lograr que todas las funciones trabajen correctamente.... basicamente la funcion borrar debe de preguntar el nombre y con esto buscar el nodo entre la lista con el mismo nombre y borrar unicamente este sin alterar la lista


#include<stdio>
#include<conio.h>// getch
#include<ctype.h>//typedef
#include<string.h> // cadenas
#include<iostream.h>


/*****************************INICIO DE ESTRUCTURAs*****************************/
struct cursos{
char sigla[20];
char nomcurso[20];
float nota;
}scursos;

struct datos{
struct cursos scursos;
char nombre[50];
char carrera[50];
int beca;
float promedio;
int cantcursos;


struct datos *sig;
};
typedef struct datos nodo;

char menu(void);



nodo *insertar(nodo *pnodo);
void mostrar(nodo *pnodo);
nodo *destruir(nodo *pnodo);


void main(){
nodo *primero;
primero=NULL;
char opcion;

do{
opcion=menu();
clrscr();
switch(opcion){
case '1': clrscr();
primero=insertar(primero);break;
case '2': clrscr();
mostrar(primero);system("PAUSE"); break;
case '3': clrscr();primero=destruir(primero);break;

}
}while(opcion!=3);
}//cierre del main




char menu (){
char opcion;
cout<<"1 insertar "<<endl;
cout<<"2 mostrar "<<endl;
cout<<"3 BORRAR "<<endl;
cout<<"4 SALIR"<<endl;
opcion=getche();
return opcion;
}


nodo *insertar(nodo *pnodo){
nodo *tempo;
tempo=new nodo;

cout<<"Nombre ";
gets(tempo->nombre);


tempo->sig=pnodo;
pnodo=tempo;
return pnodo;
}


/*********************************************************************************/
void mostrar(nodo *pnodo){
nodo *actual=pnodo;
while(actual!=NULL){
cout<<"nombre "<<actual->nombre<<endl;
actual=actual->sig;
}

} //cierre de la funcion mostrar


/*******************************************************************

void mostrar(nodo *pnodo){


nodo *actual=pnodo;
while(actual!=NULL){
cout<<"nombre "<<actual->nombre<<endl;
actual=actual->sig;
}

} //cierre de la funcion mostrar




/*********************************************************************/
nodo *destruir(nodo *pnodo)
{
char nombrebusc[50];
nodo *actual, *anterior,*tempo;
int aux;
pnodo=actual;
anterior=NULL;

cout<<"DIGITE NOMBRE "<<endl;
gets(nombrebusc);

while(pnodo!=NULL){

if(strcmp(nombrebusc,pnodo->nombre)==0){
actual=actual->sig;
anterior->sig=actual->sig;
delete(actual);
tempo=actual;

break;
}
if(strcmp(nombrebusc,pnodo->nombre)!=0){
pnodo=pnodo->sig; }
}
return NULL;
}


/****Gra cias de antemano :chavo:*/
 
Arriba