PIlha estatica em c

21/11/2015

0

Galera boa noite, estou com uma tremenda dificuldade em meu raciocinio, o exercicio é sobre pilha estática e dinâmica, este primeiro exemplo abaixo estou fazendo em pilha estática... a pergunta é:

Faça um programa que leia 20 números em uma pilha, a cada 10 números inseridos, passe-os para uma segunda pilha, em seguida mostre-a.

Meu código é o seguinte:

#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#define MAX 12

// TIPO STRUCT
typedef struct{
int v[MAX];
int topo;
}Pilha;


Pilha *criaPilha(){
Pilha *p = (Pilha*)malloc(sizeof(Pilha));
p->topo = -1;
return p;
}

int pilhacheia(Pilha *p){
return(p->topo == MAX);
}

int pilhavazia(Pilha *p){
return p->topo < 0;
}

void empilha(Pilha *p, int x){
p->v[p->topo++] = x;
}

int desempilha(Pilha *p){
return p->v[p->topo--] ;
}

int mostrarpilha(Pilha *p){
int i;
i = p->topo;
if (pilhavazia(p)){
printf("\n Pilha Vazia");
}else{

while(i >=0){
printf("%d ", p->v[i]);
i--;
}
}

}

// retorna o elemento do topo sem desempilhar
int topo(Pilha* p){
return p->v[p->topo-1];
}

int main(){
Pilha *p = criaPilha();
Pilha *p2 = criaPilha();;
int x, i = 0, aux[10], j;
while(i < MAX){
printf("Empilhe o numero: ");
scanf("%d", &x);
empilha(p, x);
if(p->topo = 9){
while(p->topo >= 0){
empilha(p2, p->v[p->topo]);
desempilha(p);
}
}
i++;

}


printf("\n");
system ("pause");
return 0;

}
Jonas Nascimento

Jonas Nascimento

Responder

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar