Estrutura de dados - pilha
Publicado por Jose Ribeiro 07/08/2009
[ Hits: 7.642 ]
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.
Script em Pascal/Kylix para controle de Locadoras sem salvar arquivos em disco
Nenhum comentário foi encontrado.
Passkeys: A Evolução da Autenticação Digital
Instalação de distro Linux em computadores, netbooks, etc, em rede com o Clonezilla
Título: Descobrindo o IP externo da VPN no Linux
Armazenando a senha de sua carteira Bitcoin de forma segura no Linux
Enviar mensagem ao usuário trabalhando com as opções do php.ini
Instalando Brave Browser no Linux Mint 22
vídeo pra quem quer saber como funciona Proteção de Memória:
Encontre seus arquivos facilmente com o Drill
Mouse Logitech MX Ergo Advanced Wireless Trackball no Linux
Compartilhamento de Rede com samba em modo Público/Anônimo de forma simples, rápido e fácil
Instalar sem formatar, pergunta meio boba. (4)
Não consigo cadastrar nenhuma conta online (7)
O que esta havendo com o mercado de ti? (9)