thegoodfellas/blogset-br huggingface dataset:
MatrizesUma matriz e um tipo de dado homogeneo, que suporta a manipulacao de qualquer tipo de dado primitivo, desde que seja apenas um tipo. A matriz e uma estrutura de dados dividida em linhas e colunas. Desta forma nos podemos armazenar dentro dela diversos valores ,sendo que para podermos especificar um destes valores devemos identifica-lo atraves do numero da linha e da coluna aonde o elemento de encontra.Como se pode perceber, dependendo do numero de colunas e linha de uma matriz, ele pode conter uma infinidade de informacoes, dai a necessidade de se especificar a linha e a coluna em que se encontram os elementos para que ele possa ser identificado.Exemplo: 1 2 3 1 C F E 2 D A B 3 H G I 4 L M J Desta forma, cada elemento armazenado na matriz podera ser acessado atraves do cruzamento de sua respectiva linha com a sua coluna.Exemplo :Na matriz acima nos temos os valores A,B,C,D,E,F,G,H,I,J,L,M, todos eles armazenados na mesma estrutura. Para que possamos acessar um item especifico qualquer nos devemos informar o numero da linha e coluna.Para acessar uma letra especifica deveremos faze-lo da seguinte forma: MATRIZ [ 2 , 2 ] => A MATRIZ [ 1 , 3 ] => HMATRIZ [ 3 , 1 ] => ENote que eu sempre devo especificar primeiramente a COLUNA, e depois LINHA. Algoritmos de Manipulacao de Matrizes.Exercicio 15:Dada uma matriz 4 x 4 de inteiros faca um algoritmo que permita o preenchimento de toda a matriz com os valores digitados pelo usuario. Exercicio 16:Dada a matriz 4x4 preenchida no exercicio anterior , faca um algoritmo capaz de fazer a soma de todos os valores de cada coluna e apresente o resultado na tela. Exercicio 17:Escreva um algoritmo capaz de calcular a soma dos elementos que se encontram abaixo da diagonal principal de uma matriz de 10x10 do tipo inteiro, que devera ser digitada pelo usuario , e apresentar o resultado no final do processamento. Exercicio 18:Faca um algoritmo capaz de somar todos os valores de uma mesma linha de todas as linhas de uma matriz 4X5 do tipo inteiro, que devera ser digitadas pelo usuario , e apresentar o resultado da soma de cada linha para o usuario Exercicio 19:Dada uma matriz de 4x4 do tipo inteiro que devera ser preenchida pelo usuario, faca um algoritmo capaz de criar uma nova matriz com as mesmas dimensoes , baseada na primeira cujos elementos deve obedecer as seguintes regras: Quando o numero da coluna for maior que o numero da linha, o elemento devera ser multiplicado pelo valor da coluna e colocado ma mesma posicao na nova matriz Quando o numero da linha for maior que o da coluna, o elemento devera ser multiplicado pelo numero da linha e colocado na mesma posicao na nova matriz. Quando o numero da coluna for igual ao da linha, o elemento devera ser multiplicado por 10 e colocado na mesma posicao na nova matriz.Apos o processamento o algoritmo devera mostra a nova matriz elemento a elemento para o usuario. Exercicio 20:Quadrado Magico. 15 15
15 15 15 15 6 1 8 15 15 7 5 3 15 15 2 9 4 15 15 15 15 15 15 Fazer um algoritmo capaz de colocar em uma matriz quadrada (aonde a quantidade de linhas e igual a quantidade de colunas) numeros inteiros, comecando pelo 1 ate o ultimo numero inteiro necessario para preencher todas as casas da matriz (sem pular nenhum), de forma que a soma de todos os elementos de uma linha qualquer seja igual a soma de todos os elementos de uma coluna qualquer, inclusive tambem devera ser igual a soma das diagonais da matriz.REGRAS:1. Aceitar a ordem da matriz.(deve ser impar)2. O primeiro numero e colocado na primeira linha e na coluna central3. Repetir ate que o ultimo numero colocado seja maior que o quebrado de ordem da matriz: Subtrair 1 da coluna Subtrair 1 da linha Se a linha for igual a zero entao a linha passa a ser a ordem da matriz Se a coluna for igual a zero entao a coluna passa a ser a ordem da matriz Se a posicao estiver ocupada A linha passa a ser igual a linha anterior +1 A coluna passa a ser a coluna anterior INICIOARGUMENTOORDEM {ORDEM DO QUADRADO MAGICO}VARIAVEISORDEM:INTEIROQUADRADO:MATRIZ [ORDEM , ORDEM] {MATRIZ P/ ARMAZENAR O} {QUADRADO MAGICO}LINHA:INTEIRO {CONTADOR DE LINHA DA MATRIZ}COLUNA:INTEIRO {CONTADOR DE COLUNAS DA MATRIZ}LINHA_ANTERIOR:INTEIRO {ARMAZENAR A LINHA ANTERIOR}COLUNA_ANTERIOR:INTEIRO {ARMAZENAR A COLUNAANTERIOR}CONT:INTEIROPROCEDA QUADRADO_MAGICOSE RESTO(ORDEM / 2) = 0 MOSTRE ( "ORDEM INVALIDA PARA QUADRADO MAGICO")SENAOCONT : = 1LINHA : = 1COLUNA : = (ORDEM +1) / 2QUADRADO [ COLUNA , LINHA ] : = CONTENQUANTO CONT <= ORDEM * ORDEM LINHA : = LINHA - 1COLUNA : = COLUNA - 1CONT : = CONT + 1SE LINHA = 0 LINHA : = ORDEMFIM_SESE COLUNA : = 0COLUNA : = ORDEMFIM_SESE QUADRADO [ COLUNA , LINHA ] < > NULOLINHA : = LINHA ANTERIOR + 1COLUNA : = COLUNA_ANTERIORFIM_SEQUADRADO [ COLUNA , LINHA ] : = CONTADORLINHA_ANTERIOR : = LINHACOLUNA_ANTERIOR : = COLUNAFIM_ENQUANTOFIM_SEFIM. Vetores:Existem tambem as chamadas matrizes unidimensionais, ou vetores. Neste caso a matriz sera formada apenas por linhas ou colunas, sendo necessario informar apenas 1 numero para identificar um elemento dentro da matriz.EXEMPLO: 1 1 A 2 B 3 C 4 D No exemplo ao lado a matriz tem apenas uma coluna, e poderia ser declarada da seguinte forma:LETRAS:MATRIZ[4] DE CHARE cada elemento podera ser identificado da seguinte forma:LETRAS[3]: = "C" Algoritmos de Manipulacao de Vetores.Exercicio 21:Dada um vetor de 10 posicoes do tipo inteiro, faca um algoritmo que permita o preenchimento de toda o vetor com os valores digitados pelo usuario.INICIO VARIAVEIS;NUMEROS:MATRIZ [10 ] DE INTEIROS;POS: INTEIRO;{CONTADOR DEPOSICAO DO VETOR}PROCEDA PARA POS : = 1 INCREMENTO = 1ATE POS > 10LEIA ( NUMEROS [POS ] )FIM_PARAFIM. Exercicio 22Dado o vetor de 10 posicoes do tipo inteiro preenchido no exercicio anterior , faca um algoritmo capaz de fazer a soma de todos os seus valores e apresente o resultado na tela.INICIO VARIAVEIS;NUMEROS : MATRIZ [10 ] DE INTEIROS;POS:INTEIRO {CONTADOR DA POSICAO NO VETOR}SOMA:INTEIRO;{VARIAVEL PARA ARMAZENAR A SOMA DOS VALORES} PROCEDA SOMA:
= 0;PARA POS : = 1 INCREMENTO = 1ATE POS > 10SOMA : = SOMA + NUMEROS [POS ]FIM_PARAMOSTRE ( "O RESULTADO DA COLUNA => ")MOSTRE ( SOMA )FIM. Exercicio 23Dado o vetor do exercicio anterior faca um algoritmo capaz de dobrar os valores de todas as posicoes do vetor.INICIO VARIAVEIS;NUMEROS : MATRIZ [ 4 , 4 ] DE INTEIROS { MATRIZ ORIGINAL}POS:INTEIRO {CONTADOR POSICAO}PROCEDAPARA POS : = 1 INCREMENTO = 1ATE POS > 10NUMEROS [ POS ] : = NUMEROS [ POS ] * 2FIM_PARA FIM. Exercicio 24Dado o vetor do exercicio anterior faca um algoritmo para mostrar na tela somente os valores que estiverem em posicoes impares dentro do vetor.INICIO NUMEROS : MATRIZ [ 10 ] DE INTEIROS {DECLARACAO DA MATRIZ}POS:INTEIRO{CONTADOR DE POSICAO}PROCEDAPARA POS : = 1 INCREMENTO = 2ATE POS > 10MOSTRE ( NUMEROS [ POS ] )FIM_PARAFIM Exercicio 25Dado Um Vetor de 80 posicoes do tipo char, que devera ser preenchido pelo usuario, faca um algoritmo que, a partir de uma letra digitada pelo usuario conte quantas vezes esta letra aparece dentro do vetor e informe o resultado da contagem ao final do processamento. Exercicio 26Dado o mesmo vetor preenchido no exercicio anterior, faca um novo algoritmo capaz de identificar e contar, quantos pares de letras existem no vetor, ou seja quantas vezes aparecem duas letras repetidas uma apos a outra. Exercicio 2710) - Dado um vetor de 10 posicoes do tipo char faca uma algoritmo que permita que o usuario digite 10 letras, e que estas letras sejam colocadas nas respectivas posicoes dentro do vetor. O algoritmo no entanto nao podera permitir que seja digitada uma letra menor que a letra que foi digitadas anteriormente, ou seja a letra que sera colocada na posicao 2 devera ser maior que a letra colocada na posicao 1 , a letra colocada na posicao tres devera ser maior que a letra digitada para a posicao 2, e assim respectivamente ate o final do vetor. A primeira letra podera ser digitada livremente pelo usuario sendo que a regra acima somente se aplica as letras que forem colocadas da segunda posicao em diante. Exercicio 28Dado um vetor de 10 posicoes do tipo inteiro , que devera ser preenchido pelo usuario, faca um algoritmo capaz de percorrer todo o vetor dobrando todos os numero que forem impares e dividindo pela metade todos os numero que forem pares colocando o resultado das operacoes nas mesmas posicoes dentro do vetor Exercicio 29Calculo do Digito verificador do CPF:O CPF e formado por 9 digitos, mas 2 digitos verificadores que ficam no final.Estes digitos verificadores sao calculaods de acordo com os outros 9 digitos do CPF e servem para verificar a validade do CPF.Apresentamos aqui uma forma simplificada para o calculo destes digitos:Somar os produtos de cada um dos digitos do CPF, pela sua respectiva posicao, e pegar o resto da divisao inteira desta soma por 11. este resultado sera o digito verificador 1Para calcular o digito verificador 2 , repetir o processo, somente alterando a multiplicacao dos digitos pela sua posicao , de forma que as
, para um novo valor especificado pelo usuario.Passos par Alteracao:1. Aceitar a Letra que vai ser alterada (ELEMENTO)2. Aceitar a nova Letra (ELEMENTO_NOVO)3. Achar a posicao de alteracao(POS)4. Fazer uma critica para ver se a letra existe na lista5. Fazer uma critica para ver se a alteracao nao vai quebrar a ordem da lista6. Fazer a alteracao.Na hora de fazer uma alteracao deve-se tomar cuidado para que o novo valor do elemento nao altere a ordem da lista.Para se certificar que o novo valor do elemento da lista , esta compativel com a ordem da lista ,ou seja se a alteracao deste valor nao vai comprometer a ordem da lista devemos fazer alguns testes.Para se fazer estes testes existem 4 situacoes: Situacao 1 1 1 NOVO Situacao 2 1 1 NOVO 2 C 3 D Situacao 3 1 1 A 2 B 3 NOVO Situacao 4 1 1 A 2 NOVO 3 C Na situacao 1, o que nos temos e que a quantidade de elementos da lista e igual a 1 , neste caso qualquer valor sera permitido para . Na situacao 2 o elemento que desejamos alterar esta no comeco da lista, e a lista tem mais de um elemento. Neste caso , o novo elemento devera ser menor que o elemento na proxima posicao da lista para que a alteracao possa ser feita. Na situacao 3 o elemento que se deseja alterar e o ultimo elemento da lista, e a lista tem mais de um elemento. Neste caso , o novo elemento devera ser maior que o elemento que esta na posicao anterior da lista. Na Situacao 4 , que e o mais comum, o elemento que se deseja alterar esta entre dois elementos de uma lista , e esta lista possui mais do que 2 elementos. Neste caso , o novo elemento devera ser: Maior que o elemento na posicao anterior da lista , e Menor que o elemento na posicao posterior da lista. INICIO ARGUMENTOSLISTA : MATRIZ [ N ] DE CHAR {LISTA PROPRIAMENTE DITA}N:INTEIRO {QUANTIDADE DE ELEMENTOS NA LISTA}VARIAVEISPOS:INTEIROELEMENTO:CHARNOVO_ELEMENTO:CHARALTERA:LOGICOPROCEDA ALTERACAO_CONTIMOSTRE (DIGITE A LETRA PARA ALTERACAO)LEIA (ELEMENTO)MOSTRE (DIGITE A NOVA LETRA)LEIA (NOVO_ELEMENTO)POS: = 1ENQUANTO POS < = N E LISTA [POS]<> ELEMENTOPOS: = POS+1FIM_ENQUANTOSE POS > N MOSTRE (ALTERACAO INVALIDA)SENAO ALTERA: = FALSOCASON = 1 {SITUACAO 1}ALTERA: = VERDADEIROPOS = 1 {SITUACAO 2}SE NOVO_ELEMENTO < LISTA[POS + 1]ALTERA: = VERDADEIROFIM_SEPOS = N {SITUACAO 3}SE NOVO_ELEMENTO > LISTA[POS 1]ALTERA: = VERDADEIROFIM_SESENAO {SITUACAO 4}SE NOVO_ELEMENTO > LISTA[POS 1] E NOVO_ELEMENTO < LISTA[POS + 1ALTERA:=VERDADEIROFIM_SEFIM CASOSE ALTERA=VERDADEIROLISTA [POS] : = NOVO_ELEMENTOSENAOMOSTRE (ALTERACAO INVALIDA)FIM_SEFIM_SEFIM Exclusao em Listas Contiguas.A exclusao e o processo de eliminacao de um elemento ja existente na lista. Para excluir um elemento em uma lista contigua deve-se antecipar todos os elementos abaixo do elemento a ser excluido em uma posicao. Isto sera feito por dois motivos, primeiro para excluir fisicamente o elemento da lista , e segundo para nao deixar um espaco em branco na lista.Passos para Exclusao1. Aceitar a Letra que vai ser excluida (ELEMENTO)2. Achar a posicao de exclusao(POS)3. Verificar se a letra esta na lista4.
Remanejar todos os elementos abaixo da posicao de exclusao (POS) uma posicao para cima comecando de cima para baixo.5. N: = N 1INICIOARGUMENTOSLISTA : MATRIZ [ N ] DE CHAR {MATRIZ PARA ARMAZENAR A LISTA}N:INTEIRO {NUMERO DE ELEMENTOS NA LISTA}VARIAVEISPOS:INTEIRO {POSICAO DO ELEMENTO A SER EXCLUIDO}CONT :INTEIRO {VARIAVEL DE CONTROLE DO LOOP}ELEMENTO:CHAR {LETRA QUE VAI SER EXCLUIDA}PROCEDA EXCLUSAO_CONTIMOSTRE(DIGITE A LETRA PARA EXCLUSAO)LEIA (ELEMENTO)POS: = 1ENQUANTO POS < = N E LISTA [POS]<> ELEMENTOPOS: = POS+1FIM_ENQUANTOSE POS > N MOSTRE (EXCLUSAO INVALIDA)SENAO CONT: = POSENQUANTO CONT < N LISTA [CONT] : = LISTA [CONT+1]CONT : = CONT + 1FIM_ENQUANTOLISTA [N] : = NULON: = N - 1FIM_SEFIM. Lista EncadeadasUma lista linear e dita encadeada quando um elemento aponta sempre para o proximo elemento, mesmo que eles nao sejam contiguos. Ou seja , em cada elemento da lista nos teremos um ponteiro, que ira apontar para o proximo elemento da lista, mesmo que este elemento nao seja o proximo fisicamente na lista .Para que possamos entender as listas encadeadas sera preciso entender os conceitos de ordem fisica e ordem logica de uma lista .Ordem FisicaE a ordem sequencial na qual os elementos estao colocados dentro da lista. Ou seja e a ordem de inclusao dos elementos dentro da lista.Ordem LogicaE a ordem conseguida atraves dos ponteiros da lista. O ponteiro e um numero que esta em cada elemento da lista e que indica qual e a proxima posicao fisica que deve ser visitada para que a ordem da lista possa ser mantida .No caso das listas contiguas , o proximo elemento sempre era a proxima posicao fisica da lista , mas no caso das listas encadeadas , isto nao ocorre, porque o proximo elemento da lista sera determinado por seu ponteiro, e nao sera necessariamente a proxima posicao fisica da lista .Como se pode perceber, no caso das lista contiguas, estudadas anteriormente, a ordem fisica da lista corresponde a ordem logica, o que nao acontece nas lista encadeadas.Para que possamos trabalhar com lista encadeadas devemos ainda conhecer um outro conceito, o descritor.O descritor e um registro que contem informacoes sobre a lista. No nosso caso , o descritor tera uma unica informacao: a posicao fisica do inicio da lista .O descritor sera passado como argumento para todos os algoritmos de listas encadeadas.Antes ainda de comecarmos a desenvolver os algoritmos existe outro ponto a ser esclarecido:Com a criacao de um ponteiro para cada elemento da lista, nos teremos que trabalhar com dois dados de tipo diferente em uma mesma estrutura. Ja que o nosso elemento e do tipo CHAR , e o ponteiro e um numero INTEIRO. Para solucionar este problema , nos iremos lancar mao de um recurso estudado anteriormente, o REGISTRO. O registro e a unica estrutura de dados que nos permite trabalhar com diferentes tipos de dados dentro de uma mesma variavel. Como nos temos utilizado a matriz para representar as nossa listas, nada mais logico que utilizarmos um matriz formada por registros para podermos representar uma lista encadeada.Uma matriz de registros e uma estrutura singular, aonde cada linha da minha matriz
O proximo de A passa a ser a posicao fisica de BNote que no caso da lista estiver vazia (DESCRITOR = NULO), ou se o elemento for incluido no inicio da lista ( A = NULO) , entao o descritor devera ser ajustado para o valor de B , que passara a ser o inicio da lista, o e proximo de B passara a ser o descritor.Exemplo:No exemplo abaixo , o descritor aponta para o elemento numero 4, logo o inicio da lista e no numero 4.O algoritmo do elemento vazio localizou um espaco vazio na posicao 2, Portanto POS = 2.Atualmente a lista tem somente dois elementos: A na posicao 4 e , C na posicao 7.Como o elemento a ser inclido e o B entao ANT = 4Para incluir o B no espaco vazio 2(POS), devemos : Colocar o C no espaco vazio 2(POS) Alterar o proximo de 2(POS) para 7(O proximo de ANT) Alterar o proximo de 4(ANT) para 2(POS) O registro 7 se mantem inalterado. Passos para inclusao:1. Aceitar a letra que vai ser incluida2. Achar a posicao de inclusao(POS)3. Achar a posicao anterior a posicao de inclusao(ANT)4. Verificar se a letra ja nao existe na lista5. Colocar a letra na posicao de inclusao(POS)6. O proxino de POS passa a ser o proximo de ANT7. O proxino de ANT para a se POS IMPORTANTE:O PROXIMO DE POS PASSA A SER O PROXIMO DE ANT O PROXIMO DE ANT PASSA A SER A POSCasos Especiais:Como foi falado anteriormente existem casos especiais. Estes casos especiais acontencem quando a operacao de inclusao envolve o Descritor. Isto acontece quando vamos incluir o elmento que vai ser o primeiro elemento da lista.Neste caso entao , nao sera possivel emcontrar o elemento anterior, como esta previsto no passo 3 para insclusao(ANT = NULO) neste caso entao devemos aplicar os seguintes passos especiais:6. O proximo de POS passa ser o DESCRITOR7. O DESCRITOR passa a ser POSNote que nos casos especiais, como o valor de ANT nao pode ser encontrado entao nos substituimos ANT por DESCRITOR, que na pratia seria o ANT do primeiro elemento da lista. INICIOARGUMENTOSLISTA : MATRIZ [ N ] DE REG_LISTA {DECLARACAO DA LISTA }N:INTEIRO { O NUMERO DE ELEMENTOS DA LISTA}DESCRITOR: INTEIRO { O INICIO DA LISTA}VARIAVEISREG_LISTA : REGISTROLETRA:CHAR {DECLARACAO DO REGISTRO DA LISTA }PROXIMO : INTEIRO FIM_REGISTROPOS:INTEIRO {POSICAO DE INCLUSAO DO NOVO ELEMENTO }ANT:INTEIRO {POSICAO ANTERIOR DO NOVO ELEMENTO }ELEMENTO_NOVO: CHAR {A NOVA LETRA QUE VAI SER INCLUIDA}CONT: INTEIRO {VARIAVEL DE CONTROLE DE LOOP}PROCEDA INCLUSAO_ENCAMOSTRE (DIGITE A LETRA PARA INCLUSAO)LEIA (NOVO_ELEMENTO)POS: = ELEMENTO_VAZIO (LISTA , N)ANT: = NULOCONT: = DESCRITORENQUANTO CONT < > NULO E LISTA [CONT]. LETRA < ELEMENTO_NOVOANT : = CONTCONT: = LISTA [CONT].PROXIMOFIM_ENQUANTOSE LISTA[CONT]. LETRA = NOVO_ELEMENTOMOSTRE (INCLUSAO INVALIDA!!!!)SENAO LISTA [POS] . LETRA : = ELEMENTO_NOVOSE ANT = NULO {CASO ESPECIAL}LISTA [POS] . PROXIMO : = DESCRITOR DESCRITOR : = POSSENAO {CASO NORMAL}LISTA [POS]. PROXIMO : = LISTA [ANT]. PROXIMOLISTA [ANT]. PROXIMO : = POSFIM-SEFIM_SEFIM Alteracao em Lista Encadeadas.A alteracao em listas encadeadas e muito parecida com a alteracao em listas contiguas. Da mesma forma que
"CONT : = LISTA[ CONT ].PROXIMOSENAOCONT : = LISTA[ CONT ].ANTERIORFIM_SEFIM_ENQUANTOFIM. Inclusao em Listas Duplamente Encadeadas.Para a inclusao em listas duplamente encadeadas nos vamos continuar precisando do algoritmo da busca do elemento vazio, mas nao sera necessario faze-lo novamente, pois poderemos usar o feito para lista encadeadas alterando apenas o registro usado para declarar a matriz.o processo de inclusao de um elemento A apos um elemento B em uma lista duplamente encadeada e feito a seguinte forma: Procura-se um elemento vazio(POS) Coloca-se ali a informacao do elemento B O proximo de A passar a ser a posicao fisica de B O proximo de B passa a ser o proximo de A O anterior do proximo de A passa a ser a posicao fisica de B O anterior de B passa a ser a posicao fisica de A.Note que devemos prestar a atencao para o caso de nao existir um elemento anterior ao incluido(A), ou para o caso do elemento incluido ser o primeiro da lista , ou o ultimo da lista , neste caso devemos fazer as alteracoes necessarias no descritor. Passos para inclusao:1. Aceita a letra que vai ser incluida2. Achar a posicao de inclusao(POS)3. Achar a posicao anterior a posicao de inclusao(ANT)4. Verificar se a letra ja nao existe na lista5. Colocar a letra na posicao de inclusao(POS)6. O proxino de POS passa a ser o proximo de ANT7. O anterior de POS passa a ser ANT8. O proximo de ANT passa a ser POS9. O anterior do proximo de POS passa a ser POS IMPORTANTE: O proxino de POS passa a ser o proximo de ANTO anterior de POS passa a ser ANTO proximo de ANT passa a ser POSO anterior do proximo de POS passa a ser POSCasos Especiais:Da mesma forma que nas listas encadeadas nos teremos os casos especiais , so que nas listas duplamente encadeadas, nos teremos 2 casos especiais. O primeiro acontece quando vamos incluir um elemento que por ser o menor da lista , vai passar a ser o novo DESCRITOR.INICIO da lista. Neste caso o valor de ANT sera igual a NULO, pois nao sera possivel achar um elemento menor que ele na lista, e deveremos ajustar as regras para alterar o valor do DESCRITOR.INICIO.Neste primeiro caso especial sera necessario substituir o passo 6 e o passo 8 pelos seguintes passo especiais:6. O proximo de POS recebe DESCRITOR.INICIO8. DESCRITOR.INICIO recebe POSO segundo caso acontece quando o elemento que vamos incluir e o maior elemento da lista, e neste caso passara a ser o DESCRITOR.FINAL da lista.Podemos identificar este caso especia quando o valor de Ant e igual ao valor deo DESCRITOR.FINAL, e neste caso devemos substituir o passo 9, e aplicar o seguinte passo especial:9. DESCRITOR.FINAL recebe POS INICIOARGUMENTOSLISTA : MATRIZ [ N ] DE REG_LISTA {DECLARACAO DA LISTA }N:INTEIRO {NUMERO DE ELEMENTOS DA LISTA}DESCRITOR : REGISTROINICIO:INTEIROFINAL:INTEIROFIM_REGISTROVARIAVEISREG_LISTA : REGISTROANTERIOR: INTEIROLETRA: CHAR {DECLARACAO DO REGISTRO DA LISTA }PROXIMO : INTEIROFIM_REGISTROELEMENTO_NOVO:CHARPOS, ANT,CONT: INTEIRO PROCEDA INCLUSAO_DUPLA_ENCAMOSTRE ( DIGITE A LETRA PARA INCLUSAO)LEIA (ELEMENTO_NOVO)POS: = ELEMENTO_VAZIO (LISTA , N)ANT: = NULOCONT: = DESCRITOR.INICIOENQUANTO CONT < > NULO