bloodwarrior
Bovino adolescente
- Desde
- 7 Abr 2010
- Mensajes
- 51
- Tema Autor
- #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
/
#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
