Advertisement
Guest User

Untitled

a guest
Oct 23rd, 2014
109
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.78 KB | None | 0 0
  1. # include <cstddef>
  2. # include <iostream>
  3.  
  4. using namespace std ;
  5.  
  6. class Element {
  7. private :
  8. int value ;
  9. Element * next ;
  10. Element * prev ;
  11. public :
  12. Element ( int v) { value = v; next = prev = NULL ; }
  13. inline int getValue () { return value ; }
  14. inline Element * getNext () { return next ; }
  15. inline Element * getPrev () { return prev ; }
  16. inline void setNext ( Element * n) { next = n; }
  17. inline void setPrev ( Element * n) { prev = n; }
  18. };
  19.  
  20. class Queue {
  21. private :
  22. Element * first ;
  23. Element * last ;
  24. public :
  25. Queue () { first = last = NULL ; }
  26.  
  27. ~ Queue () {
  28. while ( first != NULL ) {
  29. last = first -> getNext ();
  30. delete first ;
  31. first = last ;
  32. };
  33. }
  34.  
  35. inline bool empty () { return first == NULL ; }
  36.  
  37. void insert ( int e) {
  38. if( first == NULL ) first = last =new Element (e );
  39. else {
  40. Element * tmp = last ;
  41. tmp -> setNext ( new Element (e ));
  42. last = tmp -> getNext ();
  43. last -> setPrev ( tmp );
  44. }
  45. }
  46.  
  47. int min () {
  48. Element * min = first ;
  49. Element * item = first -> getNext ();
  50. while ( item != NULL ) {
  51. if( min -> getValue () > item -> getValue ()) min = item ;
  52. item = item -> getNext ();
  53. }
  54. int value = min -> getValue ();
  55. if( min == first ) {
  56. first = first -> getNext ();
  57. if( first != NULL ) first -> setPrev ( NULL );
  58. }
  59. else min -> getPrev () -> setNext ( min -> getNext ());
  60. if( min == last ) {
  61. last = last -> getPrev ();
  62. if( last != NULL ) last -> setNext ( NULL );
  63. }
  64. else min -> getNext () -> setPrev ( min -> getPrev ());
  65. delete min ;
  66. return value ;
  67. }
  68. };
  69.  
  70. int main ( int argc , char * argv []) {
  71. Queue k ;
  72. for( int i=10; i>0; i--) k. insert (i );
  73. while (! k. empty ()) cout << k. min () << endl ;
  74. return 0;
  75. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement