Inserció ordenada a una pila T43690


Statement
 

pdf   zip   tar

thehtml

Disposem d’una classe Stack amb elements de tipus T (fitxer stack.hh). Implementeu un mètode d’aquesta classe que insereixi un nou element amb cert valor (paràmetre explícit) a la pila (paràmetre implícit). La pila està ordenada, i l’element que s’introdueix manté la pila ordenada.

/**
 * @pre:  La pila (parámetro implícito) está ordenada
 *        de menor (bottom) a mayor (top).
 *
 * @post: Se ha introducido en la pila p.i. de forma ordenada
 *        un nodo con contenido 'value'.
 */
void push_sort(T value);

(La declaració del mètode push_sort està al final del fitxer stack.hh.)

Els fitxers públics (icona del gatet) inclouen un .tar amb main.cc, stack.hh i un Makefile. També s’inclou una còpia dels jocs de prova públics per comoditat. A la carpeta on es descomprimeixin es pot: compilar amb "make"; i testar amb "make test".

El main.cc ja s’encarrega de llegir l’entrada, processar les comandes i produir la sortida. Per entregar, només cal pujar al Jutge el vostre fitxer stack.hh modificat.

Observació

En implementar push_sort no es poden cridar altres operacions de la classe, i tot s’ha d’implementar amb punters.

Entrada

El programa principal té un bucle on es van llegint comandes, una per línia, i per a cadascuna es realitza una operació de la pila. El nom de les comandes es correspon amb el dels mètodes de la pila. Consulteu els jocs de prova, ja que són auto-explicatius. Si una línia està buida o té un signe # al principi, s’ignora i es passa a la següent.

Sortida

La sortida és l’estat de la pila cada vegada que l’entrada conté una comanda size o print. Consulteu els jocs de prova, ja que són auto-explicatius.

Public test cases
  • Input

    push 1
    push 2
    size
    push 3
    print
    push_sort 0
    print

    Output

    size is 2
    <top> 3, 2, 1 <bottom>
    <top> 3, 2, 1, 0 <bottom>
    
  • Input

    size
    print
    push_sort -7
    push_sort 0
    print
    push_sort -3
    print
    size

    Output

    size is 0
    <top> <bottom>
    <top> 0, -7 <bottom>
    <top> 0, -3, -7 <bottom>
    size is 3
    
  • Information
    Author
    PRO2
    Language
    Catalan
    Other languages
    Spanish
    Official solutions
    Unknown.
    User solutions
    C++