English Deutsch Français Italiano Español Português 繁體中文 Bahasa Indonesia Tiếng Việt ภาษาไทย
Todas as categorias

Gostaria de montar uma pilha por isso peço que me enviem projetos. De preferência que ocupe pouco espaço. Meu e-mail é aldeido_fenol@yahoo.com.br. Agradeço.

2007-01-10 04:15:00 · 3 respostas · perguntado por Kurt Gauss 3 em Ciências e Matemática Química

3 respostas

Uma pilha simples pode ser feita com um limão e uma placa de 2 cm de largura e 10 de comprimento de cobre e outra igual de zinco. Faça dois cortes do limão e coloque ali as placas mergulhadas nele. Dá para medir a diferença de potencial com um amperímetro. Experimente.

2007-01-10 07:57:12 · answer #1 · answered by Cientista 7 · 0 0

Dê uma olhada no site

http://www.feiradeciencias.com.br/listageral.asp

Lá tem um punhado de coisas sobre pilhas e "otras cositas más".

Boa sorte.

2007-01-10 17:27:37 · answer #2 · answered by Xiquim 7 · 0 0

Uma pilha é uma das várias estruturas de dados que admitem remoção de elementos e inserção de novos elementos. Mais especificamente, uma pilha (= stack) é uma estrutura sujeita à seguinte regra de operação: sempre que houver uma remoção, o elemento removido é o que está na estrutura há menos tempo.

Em outras palavras, o primeiro objeto a ser inserido na pilha é o último a ser removido. Essa política é conhecida pela sigla LIFO (= Last-In-First-Out).

Veja o verbete Stack (data structure) na Wikipedia.

Implementação em um vetor
Suponha que nossa pilha está armazenada em um vetor pilha[0..n-1]. Vamos supor que os elementos de pilha são inteiros (isso é só um exemplo; os elementos de pilha poderiam ser quaisquer outros objetos). A parte do vetor ocupada pela pilha será

pilha[0..t-1] .

0 t N-1





O índice t indica o topo (= top) da pilha. Esta é a primeira posição vaga da pilha. A pilha está vazia se t vale 0 e cheia se t vale n.

Para remover um elemento da pilha — esta operação é conhecida como desempilhar (= to pop) — faça

x = pilha[--t];

Isso equivale ao par de instruções "t -= 1; x = pilha[t];" nesta ordem. É claro que você só deve desempilhar se tiver certeza de que a pilha não está vazia. Para consultar a pilha sem desempilhar faça x = pilha[t-1].

Para inserir — ou seja, para empilhar (= to push) — um objeto y na pilha faça

pilha[t++] = y;

Isso equivale ao par de instruções "pilha[t] = y; t += 1;" nesta ordem. Antes de empilhar, verifique se a pilha já está cheia para evitar que ela transborde (ou seja, para evitar um overflow). Em geral, a tentativa de inserir em uma pilha cheia é uma situação excepcional, que indica um mau planejamento lógico do seu programa.

Aplicação: parênteses e colchetes
Suponha que queremos decidir se uma dada seqüência de parênteses e colchetes está bem formada. Por exemplo, a primeira das seqüências abaixo está bem formada enquanto a segunda não está. ( ( ) [ ( ) ] )
( [ ) ]



Suponha que a seqüência de parênteses e colchetes está armazenada em uma cadeia de caracteres (= string) s. Como é hábito em C, o último caracter da cadeia é o caracter nulo, '\0'.

// A função devolve 1 se a cadeia s contém uma seqüência
// bem formada de parênteses e colchetes e devolve 0 se
// a seqüência está mal formada.

int bemFormada (char s[])
{
char *pilha; int t;
int n, i;

n = strlen (s);
pilha = mallocX (n * sizeof (char));
t = 0;
for (i = 0; s[i] != '\0'; ++i) {
// a pilha está armazenada em pilha[0..t-1]
switch (s[i]) {
case ')': if (t != 0 && pilha[t-1] == '(')
--t;
else return 0;
break;
case ']': if (t != 0 && pilha[t-1] == '[')
--t;
else return 0;
break;
default: pilha[t++] = s[i];
}
}
free (pilha);
if (t == 0) return 1;
else return 0;
}

Note que a pilha não transborda porque nunca terá mais elementos que o número de caracteres de s
t+++++

2007-01-10 13:59:59 · answer #3 · answered by lutfe 2 · 0 0

fedest.com, questions and answers