PIlha estatica em c
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;
}
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
Curtidas 0