Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # include <cstddef>
- # include <iostream>
- using namespace std ;
- class Element {
- private :
- int value ;
- Element * next ;
- Element * prev ;
- public :
- Element ( int v) { value = v; next = prev = NULL ; }
- inline int getValue () { return value ; }
- inline Element * getNext () { return next ; }
- inline Element * getPrev () { return prev ; }
- inline void setNext ( Element * n) { next = n; }
- inline void setPrev ( Element * n) { prev = n; }
- };
- class Queue {
- private :
- Element * first ;
- Element * last ;
- public :
- Queue () { first = last = NULL ; }
- ~ Queue () {
- while ( first != NULL ) {
- last = first -> getNext ();
- delete first ;
- first = last ;
- };
- }
- inline bool empty () { return first == NULL ; }
- void insert ( int e) {
- if( first == NULL ) first = last =new Element (e );
- else {
- Element * tmp = last ;
- tmp -> setNext ( new Element (e ));
- last = tmp -> getNext ();
- last -> setPrev ( tmp );
- }
- }
- int min () {
- Element * min = first ;
- Element * item = first -> getNext ();
- while ( item != NULL ) {
- if( min -> getValue () > item -> getValue ()) min = item ;
- item = item -> getNext ();
- }
- int value = min -> getValue ();
- if( min == first ) {
- first = first -> getNext ();
- if( first != NULL ) first -> setPrev ( NULL );
- }
- else min -> getPrev () -> setNext ( min -> getNext ());
- if( min == last ) {
- last = last -> getPrev ();
- if( last != NULL ) last -> setNext ( NULL );
- }
- else min -> getNext () -> setPrev ( min -> getPrev ());
- delete min ;
- return value ;
- }
- };
- int main ( int argc , char * argv []) {
- Queue k ;
- for( int i=10; i>0; i--) k. insert (i );
- while (! k. empty ()) cout << k. min () << endl ;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement