Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <string.h>
- using namespace std;
- class Lista{
- public:
- class Nodo {
- public:
- string val;
- Nodo *prox;
- Nodo *prev;
- string getValor(){
- return val;
- }
- };
- int N;
- Nodo *primero;
- Nodo *ultimo;
- Nodo *medio;
- Lista(){
- primero=ultimo=medio=NULL;
- N=0;
- }
- void Insertar (string v);
- void Tomar ();
- void Reordenar ();
- void Imprimir ();
- bool EsVacia ();
- };
- void Lista::Insertar (string v){
- Nodo *nuevo;
- nuevo= new Nodo;
- nuevo->val=v;
- if (EsVacia()==true){
- primero=nuevo;
- ultimo=nuevo;
- primero->prev=ultimo->prev=NULL;
- primero->prox=ultimo->prox=NULL;
- }else {
- ultimo->prox=nuevo;
- nuevo->prev=ultimo;
- ultimo=nuevo;
- }
- N++;
- }
- void Lista::Tomar (){
- if (EsVacia()==true){
- cout<<"Lista vacia, no hay nada que eliminar."<<endl;
- }
- else {
- if (primero==ultimo){
- primero=ultimo=NULL;
- }
- else{
- Nodo *nuevo=ultimo;
- ultimo=ultimo->prev;
- ultimo->prox=NULL;
- delete nuevo;
- }
- if (medio=NULL){
- }
- N--;
- }
- }
- void Lista::Imprimir (){
- if (EsVacia()==true){
- cout<<"No hay espadas"<<endl;
- }
- else{
- Nodo *aux=primero;
- int i=1;
- bool seguir=true;
- while (seguir==true){
- cout<<aux->Lista::Nodo::getValor()<<" ";
- if (aux==ultimo){
- seguir=false;
- }
- aux=aux->prox;
- i++;
- }
- }
- }
- void Lista::Reordenar (){
- Nodo *aux, *aux2;
- if (EsVacia()==true){
- cout<<"No hay espadas que reordenar"<<endl;
- }
- else {
- medio=primero;
- for (int i=0;i<(N/2);i++){
- medio=medio->prox;
- }
- ultimo->prox=primero;
- primero->prev=ultimo;
- medio->prev->prox=NULL;
- aux=ultimo;
- ultimo=medio->prev->prox;
- primero=medio;
- medio=aux;
- primero->prev=NULL;
- }
- }
- bool Lista::EsVacia (){
- return primero==NULL;
- }
- int main (){
- int C;
- string accion;
- Lista L;
- int cont=0, med;
- string num;
- cout<<"Cantidad: ";
- cin>>C;
- for (int i=0;i<C;i++){
- cin>>accion;
- if (accion=="insertar"){
- cin>>num;
- L.Insertar (num);
- cont++;
- }
- else if (accion=="tomar"){
- L.Tomar ();
- cont--;
- }
- else if (accion=="reordenar"){
- L.Reordenar ();
- }
- }
- cout<<endl<<cont<<endl;
- L.Imprimir ();
- cout<<endl<<endl;
- system ("pause");
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement