Estrutura de dados - pilha
Publicado por Jose Ribeiro 07/08/2009
[ Hits: 7.599 ]
Homepage: https://serviceup.com.br/
Um exemplo pilha utilizando apontadores
program pilha; uses crt; type apontador = ^celula; celula = record item:integer; prox:apontador; end; tipopilha=record fundo:apontador; topo:apontador; end; procedure iniciapilha(var pilha:tipopilha); var aux:apontador; begin new (aux); pilha.fundo:=aux; pilha.topo:=pilha.fundo; pilha.topo^.prox :=nil; end; function vazia(pilha:tipopilha):boolean; begin vazia:=pilha.fundo = pilha.topo; end; procedure inserir(x:integer;var pilha:tipopilha); var aux:apontador; begin new (aux); pilha.topo^.prox:=aux; aux^.prox := nil; aux^.item :=x; pilha.topo := aux; end; procedure imprimir(pilha:tipopilha); var aux:apontador; begin aux := pilha.fundo^.prox; while ( aux <> nil ) do begin writeln(aux^.item); aux:=aux^.prox; end; end; procedure retirai(var x:integer; var pilha:tipopilha); var aux:apontador; begin aux:= pilha.fundo^.prox; x:=aux^.item; pilha.fundo^.prox := aux^.prox; if(pilha.fundo^.prox = nil ) then pilha.topo := pilha.fundo; dispose(aux); end; procedure retirar(var x:integer; var pilha:tipopilha); var aux:apontador; begin if ( pilha.fundo^.prox^.prox = nil ) then retirai(x,pilha) else begin aux:=pilha.fundo^.prox; while (aux^.prox <>pilha.topo) do aux :=aux^.prox; pilha.topo :=aux; aux:=aux^.prox; x:=aux^.item; pilha.topo^.prox:=nil; dispose(aux); end; end; procedure media(l:tipopilha; var media:real); var aux:apontador; b:integer; begin aux:=l.fundo; media:=0; b:=0; while aux^.prox <> nil do begin aux:=aux^.prox; media:=media*aux^.item; b:=b+1; end; writeln('A Media ‚',exp(1/b*ln(media))); end; procedure quantidade(l:tipopilha; var qtde:integer); var aux:apontador; b:integer; begin aux:=l.fundo; while aux^.prox <> nil do begin aux:=aux^.prox; qtde:=qtde+1; end; end; var elem:integer; f:tipopilha; qtde:integer; opc:integer; n:integer; soma:integer; m:real; begin iniciapilha(f); repeat writeln(' 1 - Inserir '); writeln(' 2 - Retirar '); writeln(' 3 - Imprimir '); writeln(' 4 - Media Geometrica '); writeln(' 5 - Quantidade de elementos '); writeln(' 6 - Sair'); writeln(' 0 - limpar a tela'); readln(opc); case opc of 1 :begin writeln('Entre com o elemento a ser inserido'); readln(elem); inserir(elem,f); end; 2 :begin if vazia(f) then writeln('A pilha est vazia, impossivel retirar elemento !') else begin retirar(elem,f); writeln('O elemento', elem , 'foi removido da pilha'); end; end; 3:begin writeln('Elementos do pilha'); imprimir(f); end; 4 :begin media(f,m); writeln('A media ‚ ',m:3:2); end; 5 :begin quantidade(f,qtde); writeln('A quantidade de elementos ‚:', qtde ); end; 6: writeln('Saindo do programa'); 0:clrscr; end; until opc=6; end.
Horas por extenso: convertendo as horas em um TDateTime para texto corrido.
Script em Pascal/Kylix para controle de Locadoras sem salvar arquivos em disco
Ordenando um vetor sem utilização de variáveis de contagem ou auxiliar
Nenhum comentário foi encontrado.
Enviar mensagem ao usuário trabalhando com as opções do php.ini
Meu Fork do Plugin de Integração do CVS para o KDevelop
Compartilhando a tela do Computador no Celular via Deskreen
Como Configurar um Túnel SSH Reverso para Acessar Sua Máquina Local a Partir de uma Máquina Remota
Configuração para desligamento automatizado de Computadores em um Ambiente Comercial
Compartilhamento de Rede com samba em modo Público/Anônimo de forma simples, rápido e fácil
Cups: Mapear/listar todas as impressoras de outro Servidor CUPS de forma rápida e fácil
Criando uma VPC na AWS via CLI
Tem como instalar o gerenciador AMD Adrenalin no Ubuntu 24.04? (7)