Estruturas de Dados: Pilhas, Filas e Deques em Pseudocódigo
Classificado em Grego
Escrito em em
português com um tamanho de 3,88 KB
Pilhas
PILHAS
Inserção (Push)
#INS#
SE Topo || e || i
##FILAS##
INICIAR #
I\ IF ← FF ← LI – 1 \ F \
##INSERIR I\SE (FF = IF-1) e ((IF = LI) ou (FF ≠ LS)) \ I\SE (FF ≠ IF-1) e ((IF = LI) ou (FF ≠ LS)) ET \ I SE \ ((IF = LI-1 ET \ IF ← FF ← LI)) \\ INSERE 1O NODO \\ SN SE ((FF = LS \ ET FF ← LI)) \\ INSERENOINICIO SN ((FF ← FF + 1))
||INSEREMEIOOUATRAS||
FILA[FF] ← Info \ SV \ F \ SN SF \ F
##REM##
\ I \ SE IF ≠ LI-1 ET \ I SE IF = FF \\ então ((IF ← FF ← LI-1 FILAFICAVAZIA)) || SN SE IF = LS \ ET IF ← LI || SN IF ← IF + 1 || SV F || SN SF F
#CONSULTARFILA#
|I| SE IF ≠ LI-1 \ ET \ I \ Info ← Fila[IF] \ SV \ F || SN \ SF \ F
##FIENCAD##
CRIARFILAENC
|I| alocar(PtDFila) || PtDFila↑.Prim ← nulo || PtDFila↑.Ult ← nulo |F|
#INSNOVONODOD
|I| alocar(PtNovo) \ PtNovo↑.Info ← Valor \ PtNovo↑.Elo ← nulo \ SE PtDFila↑.Prim = nulo \ ET PtDFila↑.Prim ← PtNovo \ SN (PtDFila↑.Ult)↑.Prox ← PtNovo \ PtDFila↑.Ult ← PtNovo |F|
#REMOVENODOFE
|I| SE PtDFila↑.Prim ≠ nulo \ ET |I| PtAux ← PtDFila↑.Prim \ PtDFila↑.Prim ← PtAux↑.Elo \ liberar(PtAux) \ SE PtDFila↑.Prim = nulo \ ET PtDFila↑.Ult ← nulo \ SV |F| SN SF |F|
#CONSFILAD
|I| SE PtDFila↑.Prim ≠ nulo ET |I| Valor ← PtDFila↑.Prim↑.Info \ SV |F| \ SN SF |F|
#DESTRUIRFILA
|I| SE PtDFila↑.Prim ≠ nulo ET |I| P1 ← PtDFila↑.Prim || repita || P2 ← P1↑.Elo \ liberar(P1) \ P1 ← P2 até P1 = nulo |F| liberar(PtDFila) \ PtDFila ← nulo |F|
##FILADUPLENCAD##
INICILIZAR
|I| IF ← FF ← LI – 1 |F|
##INS_INI_DEQ_VAZ##
|I| se ((FF = IF-1) ou ((IF = LI) e (FF = LS))) \ ET \ SF \ SN SV \ SE (IF = LI–1 (DVAZIA) \ ET IF ← FF ← LI \ SN SE IF > LI \ ET IF ← IF – 1 \ SN IF ← LS \ Deque[IF] ← Info |F| |F|
#REM_N_FIM
|I| SE IF ≠ LI–1 \ ET SE e IF = FF (DVAIFICARVAZIA) \ ET IF ← FF ← LI-1 \ SN SE FF = LI \ ET FF ← LS SN FF ← FF-1 |SV| |F| SN |SF| |F|
#CONSULTADEQ
|I| SE IF = LI-1 ET MaiorValor ← 0 SN SE Deque[IF] > Deque[FF] \ ET MaiorValor ← Deque[IF] \ SN MaiorValor ← Deque[FF] |F|
##FILA2DESC2## DEC2ENC
|I| alocar(PtDDeque) \ PtDDeque↑.Prim ← PtDDeque↑.Ult ← nulo |F|
#INSEREDEQ_ENC
|I| SF SE (Lado = “I”) ou (Lado = “F”) ET |I| SV \ Alocar(PtNovo) \ PtNovo↑.Info ← Valor \ SE (Lado = “I” INSERE_INÍCIO) PtNovo↑.Ant ← nulo \ SE PtDDeque↑.Prim = nulo \ ET |I| PtDDeque↑.Ult ← PtNovo \ PtNovo↑.Prox ← nulo |F| SN |I| PtNovo↑.Prox ← PtDDeque↑.Prim \ (PtDDeque↑.Prim)↑.Ant ← PtNovo |F| PtDDeque↑.Prim ← PtNovo |F| SN |I| (INSERE_FINAL) PtNovo↑.Prox ← nulo \ SE PtDDeque↑.Prim = nulo ET |I| PtNovo↑.Ant ← nulo
PtDDeque↑.Prim ← PtNovo |F| SN |I| (PtDDeque↑.Ult)↑.Prox ← PtNovo \ PtNovo↑.Ant ← PtDDeque↑.Ult |F| PtDDeque↑.Ult ← PtNovo |F| |F| |F| |F|
#REMOVDEC
|I| SF SE (PtDDeque↑.Prim ≠ nulo) e ((Lado = “I”) ou (Lado = “F”)) ET |I| SV \ SE Lado = “I” ET |I| (REMOVE O 1o) PtAux ← PtDDeque↑.Prim SE PtDDeque↑.Prim = PtDDeque↑.Ult ET PtDDeque↑.Prim ← PtDDeque↑.Ult ← nulo \ SN |I| PtDDeque↑.Prim ← PtAux↑.Prox (PtDDeque↑.Prim)↑.Ant ← nulo |F| |F| SN \ i\ {REMOVE O ULT) PtAux ← PtDDeque↑.Ult \ SE PtDDeque↑.Prim = PtDDeque↑.Ult ET PtDDeque↑.Prim ← PtDDeque↑.Ult ← nulo SN |I| PtDDeque↑.Ult ← PtAux↑.Ant
(PtDDeque↑.Ult)↑.Prox ← nulo |F| |F| liberar(PtAux) \ F |F|
#CONSDEC_ENC
|I| SF \ SE (PtDDeque↑.Prim ≠ nulo) e ((Lado = “I”) ou (Lado = “F”)) ET |I| SV \ SE Lado = “I” \ ET Valor ← (PtDDeque↑.Prim).Info \ SN Valor ← (PtDDeque↑.Ult).Info |F| |F|