Código
#include <iostream> using namespace std; class nodo { private: int valor; nodo *siguiente; friend class lista; public: nodo(int v, nodo *sig = NULL) { valor = v; siguiente = sig; } }; typedef nodo *pnodo; class lista { private: pnodo primero; pnodo actual; public: lista() { primero = NULL; actual = NULL; } ~lista(); void Insertar(int v); void Borrar(int v); void Prom(int p); bool ListaVacia() { return primero == NULL; } void Primero() { actual = primero; } void Mostrar(); }; lista::~lista() { pnodo aux; while(primero) { aux = primero; primero = primero->siguiente; delete aux; } actual = NULL; } void lista::Insertar(int v) { pnodo anterior; if(ListaVacia() || primero->valor > v) { primero = new nodo(v, primero); } else { anterior = primero; while(anterior->siguiente && anterior->siguiente->valor <= v) anterior = anterior->siguiente; anterior->siguiente = new nodo(v, anterior->siguiente); } } void lista::Borrar(int v) { pnodo anterior, nodo; nodo = primero; anterior = NULL; while(nodo && nodo->valor < v) { anterior = nodo; nodo = nodo->siguiente; } // Borrar el nodo if(!anterior) // Primer elemento primero = nodo->siguiente; else // un elemento cualquiera anterior->siguiente = nodo->siguiente; delete nodo; } void lista::Mostrar() { nodo *aux; aux = primero; while(aux) { cout << aux->valor <<" "; aux = aux->siguiente; } cout<<endl; } int main() { lista Lista; int A; short Q, Q1, c=0; cin>>A>>Q; Lista.Insertar(A); Q1=Q; for(int cont=0; cont<Q1; cont++) { cin>>Q; switch(Q) { case 1: cout<<endl; break; case 2: //insertar cin>>A; Lista.Insertar(A); cin>>A; Lista.Insertar(A); break; case 3: //Mostrar toda la lista Lista.Mostrar(); break; case 4: //eliminar cin>>A; Lista.Borrar(A); cin>>A; Lista.Borrar(A); break; } } return 0; }
Es un ejercicio básico de listas, allí agrega de forma ascendente, elimina y muestra la lista. Ahora en el switch en el caso 1 el programa debe mostrar la posicion del medio de la lista, o "posicion promedio" y esa es la funcion que no se como implementar. Si pudieran ayudarme o darme ideas se los agradeceria mucho