Escolar Documentos
Profissional Documentos
Cultura Documentos
o.Asestruturas dedadosdinmicasqueabordaremosso: Listas; Filas; Pilhas; Listas Umalistaumacoleodeelementosdomesmotipodispostoslinearmentequepodemounoseguiruma determinadaorganizao. Porexemplo:[E1,E2,E3,E4,E5,...,En],ondendeveser>=0.Ouseja,umasequnciadezerooumais itensnaqualEideumdeterminadotipoenrepresentaotamanhodalista. Listassoestruturasflexveisqueadmitemasoperaesdeinsero,remooerecuperaodeitens. Suaprincipalpropriedadeestruturaldizrespeitoasposiesrelativasdositens: Sen>=1,x1oprimeiroitemexnoltimo Emgeral,xiprecedexi+1parai=1;2;...;n1exisucedexi1parai=2;3;...n;
UmaEstruturadeDadosdotipoListaumconjuntodedadosdispostose/ouacessveis emumaseqnciadeterminada,epodemestaremordemouno.
Observaes:
o o o Necessitamosdeumvetorparaarmazenarasinformaes. Necessitamosdeumindicadordaposioatualdoultimoelementodalista. Necessitamosdeumaconstantequenosdigaquandoalistaestcheiaeduasoutrasparacodificarerros.
Pseudocdigo:
Constantes Maxlista = 100; Tipo Lista { dados[Maxlista]: inteiro ultimo: inteiro }; Var Alista : lista
AspectosFuncionais:
Operaes:Colocareretirardadosdalista:
InicializaLista DestroiLista
AlgoritmoInicializaLista
AlgoritmoListaCheia
Booleano FUNO listaCheia() inicio SE (aLista.ultimo = Maxlista - 1) ENTO RETORNE(Verdade) SENO RETORNE(Falso); FIM SE fim;
AlgoritmoListaVazia
Constantes ErroListaCheia=1; ErroListaVazia=2; ErroPosio=3; InteiroFUNOadiciona(inteirodado) incio SE(listaCheia)ENTO RETORNE(ErroListaCheia); SENO aLista.ultimo<aLista.ultimo+1. aLista.dados[aLista.ultimo]<dado; RETORNE(aLista.ultimo); FIMSE fim;
AlgoritmoRetira
InteiroFUNOadicionaNoIncio(inteirodado) variveis inteiroposio;"Varivelauxiliarparacaminhar" incio SE(listaCheia)ENTO RETORNE(ErroListaCheia); SENO aLista.ultimo<aLista.ultimo+1; posio<aLista.ultimo; ENQUANTO(posio>0)FAA "Empurrartudoparatras" aLista.dados[posicao]<aLista.dados[posicao1]; posio<posio1; FIMENQUANTO aLista.dados[0]<dado; RETORNE(0); FIMSE fim;
AlgoritmoRetiraDoIncio
Procedimento: o Testamossehelementos. o Decrementamosoltimo. o Salvamoseprimeiroelemento. o Empuramostudoparaafrente. Parmetros: o Lista(global). Inteiro FUNO retiraDoIncio() variveis inteiro posio, valor; incio SE (listaVazia) ENTO RETORNE(ErroListaVazia); SENO aLista.ultimo <- aLista.ultimo - 1; valor <- aLista.dados[0]; posio <- 0; ENQUANTO (posio <= aLista.ultimo) FAA "Empurrar tudo para frente" aLista.dados[posicao]<- aLista.dados[posicao + 1]; posio <- posio + 1; FIM ENQUANTO RETORNE(valor); FIM SE fim;
AlgoritmoAdicionaNaPosio
Inteiro FUNO adicionaNaPosio(inteiro dado, destino) variveis inteiro posio; incio SE (listaCheia) ENTO RETORNE(ErroListaCheia); SENO SE (destino > aLista.ultimo + 1) ENTO RETORNE(ErroPosio); FIM SE aLista.ultimo <- aLista.ultimo + 1; posio <- aLista.ultimo; ENQUANTO (posio > destino) FAA "Empurrar tudo para tras" aLista.dados[posicao] <- aLista.dados[posicao - 1]; posio <- posio - 1; FIM ENQUANTO aLista.dados[destino] <- dado; RETORNE(destino); FIM SE fim;
AlgoritmoRetiraDaPosio
InteiroFUNOretiraDaPosio(inteirofonte) variveis inteiroposio; inteirovalor; incio SE(fonte>aLista.ultimo)ENTO RETORNE(ErroPosio); SENO SE(listaVazia)ENTO RETORNE(ErroListaVazia); SENO aLista.ultimo<aLista.ultimo1; valor<aLista.dados[fonte]; posio<fonte; ENQUANTO(posio<=aLista.ultimo)FAA "Empurrartudoparafrente" aLista.dados[posicao]<aLista.dados[posicao+1]; posio<posio+1; FIMENQUANTO RETORNE(valor); FIMSE FIMSE fim;
AlgoritmoAdicionaEmOrdem
Procedimento: o Necessitamosdeumafunoparacompararosdados(maior) o Testamossehespao. o Procuramospelaposioondeinserircomparandodados. o ChamamosadicionaNaPosio. Parmetros: o Odadoaserinserido. o Lista(global). AlgoritmoMaior BooleanoFUNOmaior(inteirodado1,dado2) incio SE(dado1>dado2)ENTO RETORNE(Verdade) SENO RETORNE(Falso); FIMSE fim; AlgoritmoAdicionaEmOrdem InteiroFUNOadicionaEmOrdem(inteirodado) variveis inteiroposio;"Varivelauxiliarparacaminhar" incio SE(listaCheia)ENTO RETORNE(ErroListaCheia); SENO posio<0; ENQUANTO(posio<=aLista.ultimoEmaior(dado,aLista.dados[posio]))FAA "Encontrarposioparainserir" posio<posio+1; FIMENQUANTO RETORNE(adicionaNaPosio(dado,posio)); FIMSE fim;
AlgoritmoRetiraEspecfico
Retiraumdadoespecficodalista. Procedimento: o Testamossehelementos. o Testamosseodadoexisteequalsuaposio. o NecessitamosdeumafunoPosio(dado) o ChamamosRetiraDaPosio. Parmetros: o Odadoaserretirado. o Lista(global). Prembulo:AlgoritmoPosio InteiroFUNOposio(inteirodado) variveis inteiroposio; incio posio<0; ENQUANTO(posio<=aLista.ultimoE NO(IGUAL(dado,aLista.dados[posio])))FAA posio<posio+1; FIMENQUANTO SE(posio>aLista.ultimo)ENTO RETORNE(ErroPosio); SENO RETORNE(posio); FIMSE fim;
AlgoritmoRetiraEspecfico
InteiroFUNOretiraEspecfico(inteirodado) variveis inteiroposio; incio SE(listaVazia)ENTO RETORNE(ErroListaVazia); SENO posio<posio(dado); SE(posio<0)ENTO RETORNE(ErroPosio); SENO RETORNE(retiraDaPosio(posio)); FIMSE FIMSE fim;