LISTA ORIGINAL: LUNES->MARTES->MIERCOLES->JUEVES->VIERNES->SABADO->DOMINGO
Dia especificado por el usuario: JUEVES
LISTA MODIFICADA: JUEVES->VIERNES->SABADO->DOMINGO->LUNES->MARTES->MIERCOLES
He intentado ir agregando al final de la lista original los datos que son diferentes al dato especificado por el usuario y borrando el elemento inicial de la lista pero no tuve exito aca dejo el programa solo fijense en el modulo que se llama void modificar_lista(pnodo &lista)
Código
#include <iostream> #include <stdlib.h> #include <string.h> using namespace std; typedef char tcad[16]; typedef struct tnodo *pnodo; typedef struct tnodo{ tcad dato; pnodo sig; }; void inicia(pnodo &lista); void crear(pnodo &nuevo); void agregar_final(pnodo &lista, pnodo nuevo); pnodo quitar_inicio(pnodo &lista); void modificar_lista(pnodo &lista); void mostrar(pnodo lista); int main() { pnodo milista, nodo; int opcion; inicia(milista); do{ system("cls"); cout << "1. Iniciar lista" << endl; cout << "2. Agregar elementos a la lista" << endl; cout << "3. Modificar lista" << endl; cout << "4. Mostrar lista" << endl; cout << "5. Salir" << endl; cin >> opcion; switch(opcion){ case 1: inicia(milista); break; case 2: crear(nodo); if(nodo!=NULL){agregar_final(milista,nodo);}; break; case 3: modificar_lista(milista); break; case 4: cout << "***LISTA***" << endl; mostrar(milista); break; case 5: cout << "FIN DEL PROGRAMA" << endl; break; default: cout << "Opcion incorrecta" << endl; } system("pause"); }while(opcion!=5); } void inicia(pnodo &lista) { lista=NULL; } void crear(pnodo &nuevo) { nuevo=new tnodo; if(nuevo!=NULL){ cout << "Ingrese dato: "; cin >> nuevo->dato; nuevo->sig=NULL; } else{ cout << "MEMORIA INSUFICIENTE" << endl; } } void agregar_final(pnodo &lista, pnodo nuevo) { pnodo i; if(lista==NULL){ lista=nuevo; } else{ for(i=lista;i->sig!=NULL;i=i->sig); i->sig=nuevo; } } pnodo quitar_inicio(pnodo &lista) { pnodo borrado; if(lista==NULL){ borrado=NULL; } else{ borrado=lista; lista=lista->sig; borrado->sig=NULL; } return borrado; } void modificar_lista(pnodo &lista) { pnodo i; tcad buscado; cout << "Ingrese dia de la semana: "; cin >> buscado; for(i=lista;i!=NULL;i=i->sig){ if(strcmp(i->dato,buscado)!=0){ agregar_final(lista,i); delete(quitar_inicio(lista)); } else{ break; } } } void mostrar(pnodo lista) { pnodo i; if(lista!=NULL){ for(i=lista;i!=NULL;i=i->sig){ cout << "Nodo: " << i->dato << endl; } cout << endl; } else{ cout << "LISTA VACIA" << endl; } }