Olá colegas, sou novato por aqui e queria saber se podem me ajudar.
Preciso informar o maior valor numa pilha, mas ando apanhando se alguém tiver como dar um help.
O código...
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#define tamanho_pilha 10
/*1) Implementar as funções init, push, pop, stacktop e empty .
2) Crie uma função (showStack) que exiba todos os elementos de uma pilha.
3) Crie um programa que receba via teclado um conjunto de dez números que serão
colocados em uma pilha. Usando a função (showStack) exiba a pilha.
Em seguida desempilhe os números, informando cada número desempilhado. Usando
a função (showStack) exiba a pilha novamente.
5) Utilizando o programa criado na 3ª questão, crie uma função que, após carregar a pilha,
informe o maior elemento e seu índice.
*/
typedef struct
{
int top;
int itens[tamanho_pilha];
}pilha;
void init(pilha *p)
{
p->top=-1;
}
void top(pilha *p)
{
if(isempty(p))
{
printf("\n Stack underflow \n");
}
else
{
printf("\n O primeiro elemento da pilha e %d", p->itens[p->top]);
}
}
int isempty(pilha *p)
{
if(p->top==-1)
return 1;
else
return 0;
}
int isfull(pilha *p)
{
if(p->top==tamanho_pilha-1)
return 1;
else
return 0;
}
void push(pilha *p, int n)
{
if(isfull(p))
{
printf("\n stack overflow \n");
}
else
{
p->top++;
p->itens[p->top]=n;
}
}
int pop(pilha *p)
{
if(isempty(p))
{
printf("\n stack underflow \n");
}
else
{
return p->itens[p->top--];
}
}
void stacktop(pilha *p)
{
if(isempty(p))
{
printf("\n Underflow \n");
}
else
{
printf("\n O primeiro elemento da pilha e %d \n",p->itens[p->top]);
}
}
void showstack(pilha *p)
{
int i;
if(isempty(p))
{
printf("\n stack underflow \n");
}
else
{
for(i=0;i<=p->top;i++)
{
printf("\n %do elemento =%d",i+1,p->itens[i]);
}
printf("\n");
}
}
void funcmaior (pilha *p, int i,int maior)
{
if(i<p->itens[i])
{
if(p->itens[i]>maior)
{
maior=p->itens[i];
}
i++;/*
funcmaior(p->itens[i],0,0);*/
}
printf("\n O maior elemento da pilha e %d \n",maior);
}
int main()
{
int i,num;
pilha p;
init(&p);
for(i=0;i<1;i++)
{
for(i=0;i<10;i++)
{
printf("Informe um valor:");
scanf("%d",&num);
push(&p,num);
}
showstack(&p);
funcmaior(&p);
for(i=0;i<10;i++)
{
top(&p);
printf("\n E Sera eliminado da pilha...");
pop(&p);
}
printf("\n ");
showstack(&p);
}
system("pause");
}
Como não fixei muito bem esse lance de maiores e menores valores estudando c. Me deparei com essa dúvida em estrutura =/
O maior problema está nessa função mesmo. = /
void funcmaior (pilha *p, int i,int maior)
{
if(i<p->itens[i])
{
if(p->itens[i]>maior)
{
maior=p->itens[i];
}
i++;/*
funcmaior(p->itens[i],0,0);*/
}
printf("\n O maior elemento da pilha e %d \n",maior);
}
Bom, espero ansioso por resposta. Tomara que aprenda bastante aqui e possa ensinar também. Até logo. = ]
Pergunta
R!ck
Olá colegas, sou novato por aqui e queria saber se podem me ajudar.
Preciso informar o maior valor numa pilha, mas ando apanhando se alguém tiver como dar um help.
O código...
Como não fixei muito bem esse lance de maiores e menores valores estudando c. Me deparei com essa dúvida em estrutura =/ O maior problema está nessa função mesmo. = /Bom, espero ansioso por resposta. Tomara que aprenda bastante aqui e possa ensinar também. Até logo. = ]
Link para o comentário
Compartilhar em outros sites
1 resposta a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.