/* Considerando una lista de valores enteros, con un único puntero de inicio, modifique la definición y operaciones básicas de listas de modo que sea posible registrar la cantidad de valores positivos y la cantidad de valores negativos almacenados en la estructura. Desarrolle las operaciones iniciar_lista, crear_nodo, agregar_inicio, quitar_final y mostrar_lista. */ #include #include #include using namespace std; typedef struct tnodo *pnodo; typedef struct tnodo{ int dato; pnodo sig; }; typedef struct tlista{ pnodo inicio; int pos; int neg; }; //Inicialización de la lista void iniciar_lista(tlista &lis); //Creación del nodo void crear(pnodo &nuevo); //Agregar un elemento void agregar_inicio(tlista &lis, pnodo nuevo); //Quitar un elemento pnodo quitar_final(tlista &lis); //Recorrer/Mostrar la lista void mostrar_lista(tlista lis); void menu(int &opc); main() { tlista lista; pnodo nuevo, eliminado; int op, valor, op2; iniciar_lista(lista); do{ system("cls"); menu(op); switch(op) { case 1: cout<<".....Agregar valor ......"<dato<dato<0) lista.neg--; else lista.pos--; delete(eliminado); } else cout<<" No se puede eliminar, lista vacia"<> nuevo->dato; nuevo->sig=NULL; } else cout<<"Memoria llena"<sig=lis.inicio; lis.inicio=nuevo; if(nuevo->dato<0) lis.neg++; else lis.pos++; } pnodo quitar_final(tlista &lis) { pnodo aux, i; if(lis.inicio==NULL) aux=NULL; else { if(lis.inicio->sig==NULL) { aux=lis.inicio; lis.inicio=NULL; } else {for(i=lis.inicio; (i->sig)->sig!=NULL;i=i->sig); aux=i->sig; i->sig=NULL; } } return aux; } //Mostrar los elementos de la lista void mostrar_lista(tlista lis) { pnodo i; for(i=lis.inicio; i!=NULL; i=i->sig) cout<dato<>opc; }