Pilha em c/c++

Disponível somente no TrabalhosFeitos
  • Páginas : 2 (416 palavras )
  • Download(s) : 0
  • Publicado : 30 de novembro de 2012
Ler documento completo
Amostra do texto
#include <stdio.h>
#include <stdlib.h>

struct TipoItem {
char car;
};
typedef struct TipoCelula *TipoApontador;
struct TipoCelula {
struct TipoItem Item;
TipoApontador Prox;
};
structTipoPilha {
TipoApontador Fundo, Topo;
int Tamanho;
} ;

void FPVazia(struct TipoPilha *Pilha)
{
Pilha->Topo = (TipoApontador) malloc (sizeof(struct TipoCelula));
Pilha->Fundo =Pilha->Topo;
Pilha->Topo->Prox = NULL;
Pilha->Tamanho = 0;
}

void Empilha(struct TipoItem x ,struct TipoPilha *Pilha)
{
TipoApontador Aux;
Aux = (TipoApontador) malloc(sizeof(struct TipoCelula));
Pilha->Topo->Item = x;
Aux->Prox = Pilha->Topo;
Pilha->Topo = Aux;
Pilha->Tamanho++;
}

void Desempilha(struct TipoPilha *Pilha ,struct TipoItem *Item)
{
TipoApontador q;if(Pilha->Topo == Pilha->Fundo){
printf("Erro:lista vazia\n");
return;
}
q = Pilha->Topo;
Pilha->Topo = q->Prox;
*Item = q->Prox->Item;
free(q);
Pilha->Tamanho++;
}
intTamanho(struct TipoPilha Pilha)
{
return (Pilha.Tamanho);
}

int Compara(struct TipoPilha *Pilha)
{
int x,z = 1;
TipoApontador Aux;
Aux = Pilha->Topo->Prox;
x = Pilha->Tamanho;
while(Aux!= NULL)
{
if((x%2 == 0)&&(Aux->Item.car != 'P')) z = 0;
else if((x%2 != 0)&&(Aux->Item.car == 'P')) z = 0;

Aux = Aux->Prox;
x--;
}
return z;
}
void Imprime(structTipoPilha *Pilha)
{
TipoApontador Aux;
Aux = Pilha->Topo;
while(Aux != NULL)
{

printf(" %c - ",Aux->Item.car);
Aux=Aux->Prox;
}
printf("\n");
}

int main()
{
struct TipoPilhaPilha,Pilha2;
struct TipoItem Item;
FPVazia(&Pilha);
char op = '1';
int h,i;

while(op != '0')
{
system("cls");
printf("1 - Empilhar 1 caracter \n");
printf("2 - Desempilhar\n");
printf("3- Imprimir\n");
printf("4 - Comparar\n");
printf("5 - Empilhar varios caracter\n");
printf("0 - sair\n");
scanf(" %c",&op);
if(op == '1')
{
system("cls");
printf("Digite o caracter: ");...
tracking img