Docsity
Docsity

Prepare-se para as provas
Prepare-se para as provas

Estude fácil! Tem muito documento disponível na Docsity


Ganhe pontos para baixar
Ganhe pontos para baixar

Ganhe pontos ajudando outros esrudantes ou compre um plano Premium


Guias e Dicas
Guias e Dicas

Exercício de pilha em C, Exercícios de Programação em C

Exercício acadêmico de pilha em C

Tipologia: Exercícios

2022

Compartilhado em 14/09/2022

marcella-pires-3
marcella-pires-3 🇧🇷

1 documento

1 / 3

Toggle sidebar

Esta página não é visível na pré-visualização

Não perca as partes importantes!

bg1
PILHA
/*Uniessa 11/05/2022
Atividade em sala do segundo bimestre
QUESTÃO 05
*/
#include <stdio.h>
#include <stdlib.h>
#define MAX_P 5
int rPop; //variavel para o elemento do pop()
typedef struct{
int valor[MAX_P];
int top;
}TPilha;
typedef TPilha *Ppilha;
Ppilha criarPilha(){
Ppilha p = (Ppilha)malloc(sizeof(TPilha)); //Reservando espaco na memoria para a pilha
p->top= -1; //Valor inicial do top para pilha vazia
return p;
}
// metodo para o push
int push(Ppilha p, int val){
if(p==NULL) //Pilha nao iniciada
return -1;
if(p->top>= (MAX_P -1)) //Pilha cheia
return -1;
p->top++;
p->valor[p->top]=val; //incrementa posicao
return 1;
}
//Metodo para o pop
int pop(Ppilha p){
if(p==NULL) //Pilha nao foi iniciada
return -1;
if(p->top<0) //Pilha vazia
return -1;
rPop = p->valor[p->top]; //Guardando o valor do elemento no topo da pilha
p->top--; //Decrementando por estar removendo elemento
return 1;
}
//Definindo o metodo para liberar memoria usada pela pilha
void liberarPilha(Ppilha p){
while(p->top>=0) //Enquanto o topo nao é menor que zero a pilha possui elementos
pf3

Pré-visualização parcial do texto

Baixe Exercício de pilha em C e outras Exercícios em PDF para Programação em C, somente na Docsity!

PILHA

/*Uniessa 11/05/ Atividade em sala do segundo bimestre QUESTÃO 05 */ #include <stdio.h> #include <stdlib.h> #define MAX_P 5 int rPop; //variavel para o elemento do pop() typedef struct{ int valor[MAX_P]; int top; }TPilha; typedef TPilha *Ppilha; Ppilha criarPilha(){ Ppilha p = (Ppilha)malloc(sizeof(TPilha)); //Reservando espaco na memoria para a pilha p->top= -1; //Valor inicial do top para pilha vazia return p; } // metodo para o push int push(Ppilha p, int val){ if(p==NULL) //Pilha nao iniciada return -1; if(p->top>= (MAX_P -1)) //Pilha cheia return -1; p->top++; p->valor[p->top]=val; //incrementa posicao return 1; } //Metodo para o pop int pop(Ppilha p){ if(p==NULL) //Pilha nao foi iniciada return -1; if(p->top<0) //Pilha vazia return -1; rPop = p->valor[p->top]; //Guardando o valor do elemento no topo da pilha p->top--; //Decrementando por estar removendo elemento return 1; } //Definindo o metodo para liberar memoria usada pela pilha void liberarPilha(Ppilha p){ while(p->top>=0) //Enquanto o topo nao é menor que zero a pilha possui elementos

pop(p); //Remove os elementos free(p); //Liberando memoria usada. Contrario do malloc } //Metodo que imprime a pilha void imprimePilha(Ppilha p){ if(p==NULL) printf("Pilha nao iniciada"); //printf("\nNumero de elementos da pilha: %d",p->topo+1); int i; for(i=p->top;i>=0;i--) printf("\nPilha[%i]=%i\n",i,p->valor[i]); } //metodo para inversao da pilha int comparaPilha(Ppilha p, int elmt){ if(p==NULL) //Pilha nao foi iniciada return -1; if(p->top<0) //Pilha vazia return -1; int c = 0; //inicia contador de repetições int i; for(i=p->top;i>=0;i--){ //verifica se elemento a ser inserido na segunda pilha está na primeira. if(p->valor[i] == elmt){ c = 1; //flag repetição break;} } return c; } int main() { int elmt; //elemento da pilha int cont=0, repetidos = 0; // Ppilha p1, p2; p1 = criarPilha(); //inicia pilhas p2 = criarPilha(); printf("\nInsira %d numeros na pilha_1: ", MAX_P); while(cont < MAX_P){ scanf("%d", &elmt); push(p1,elmt); cont++; } cont = 0; printf("\nInsira %d numeros na pilha_2: ", MAX_P); while(cont < MAX_P){ scanf("%d", &elmt);