Advertisement
Guest User

Untitled

a guest
Feb 25th, 2017
60
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.60 KB | None | 0 0
  1. #include <iostream>
  2. #include <string.h>
  3.  
  4.  
  5. using namespace std;
  6.  
  7. class Lista{
  8. public:
  9. class Nodo {
  10. public:
  11. string val;
  12. Nodo *prox;
  13. Nodo *prev;
  14. string getValor(){
  15. return val;
  16. }
  17. };
  18. int N;
  19. Nodo *primero;
  20. Nodo *ultimo;
  21. Nodo *medio;
  22. Lista(){
  23. primero=ultimo=medio=NULL;
  24. N=0;
  25. }
  26.  
  27. void Insertar (string v);
  28. void Tomar ();
  29. void Reordenar ();
  30. void Imprimir ();
  31. bool EsVacia ();
  32. };
  33. void Lista::Insertar (string v){
  34. Nodo *nuevo;
  35. nuevo= new Nodo;
  36. nuevo->val=v;
  37.  
  38. if (EsVacia()==true){
  39. primero=nuevo;
  40. ultimo=nuevo;
  41. primero->prev=ultimo->prev=NULL;
  42. primero->prox=ultimo->prox=NULL;
  43.  
  44. }else {
  45. ultimo->prox=nuevo;
  46. nuevo->prev=ultimo;
  47. ultimo=nuevo;
  48. }
  49. N++;
  50. }
  51.  
  52.  
  53. void Lista::Tomar (){
  54. if (EsVacia()==true){
  55. cout<<"Lista vacia, no hay nada que eliminar."<<endl;
  56. }
  57. else {
  58. if (primero==ultimo){
  59. primero=ultimo=NULL;
  60. }
  61. else{
  62. Nodo *nuevo=ultimo;
  63. ultimo=ultimo->prev;
  64. ultimo->prox=NULL;
  65. delete nuevo;
  66. }
  67. if (medio=NULL){
  68. }
  69. N--;
  70. }
  71. }
  72.  
  73. void Lista::Imprimir (){
  74. if (EsVacia()==true){
  75. cout<<"No hay espadas"<<endl;
  76. }
  77.  
  78. else{
  79. Nodo *aux=primero;
  80. int i=1;
  81. bool seguir=true;
  82. while (seguir==true){
  83. cout<<aux->Lista::Nodo::getValor()<<" ";
  84. if (aux==ultimo){
  85. seguir=false;
  86. }
  87. aux=aux->prox;
  88. i++;
  89. }
  90. }
  91.  
  92. }
  93.  
  94. void Lista::Reordenar (){
  95. Nodo *aux, *aux2;
  96. if (EsVacia()==true){
  97. cout<<"No hay espadas que reordenar"<<endl;
  98. }
  99. else {
  100. medio=primero;
  101.  
  102. for (int i=0;i<(N/2);i++){
  103. medio=medio->prox;
  104. }
  105. ultimo->prox=primero;
  106. primero->prev=ultimo;
  107. medio->prev->prox=NULL;
  108. aux=ultimo;
  109. ultimo=medio->prev->prox;
  110. primero=medio;
  111. medio=aux;
  112. primero->prev=NULL;
  113. }
  114. }
  115.  
  116. bool Lista::EsVacia (){
  117. return primero==NULL;
  118. }
  119.  
  120. int main (){
  121. int C;
  122. string accion;
  123. Lista L;
  124. int cont=0, med;
  125. string num;
  126.  
  127. cout<<"Cantidad: ";
  128. cin>>C;
  129.  
  130. for (int i=0;i<C;i++){
  131. cin>>accion;
  132. if (accion=="insertar"){
  133. cin>>num;
  134. L.Insertar (num);
  135. cont++;
  136. }
  137. else if (accion=="tomar"){
  138. L.Tomar ();
  139. cont--;
  140. }
  141. else if (accion=="reordenar"){
  142. L.Reordenar ();
  143. }
  144. }
  145.  
  146. cout<<endl<<cont<<endl;
  147.  
  148. L.Imprimir ();
  149.  
  150. cout<<endl<<endl;
  151.  
  152. system ("pause");
  153. return 0;
  154. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement