Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - LonleyGirl503

#1
Hola a todos, tengo este código

Código (cpp) [Seleccionar]
#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