wnv44 Postado Maio 21, 2016 Denunciar Share Postado Maio 21, 2016 Boa noite, Estou precisando de uma ajuda ai galera, preciso fazer uma lista sequencial, e está dando erro na minha função empilhar, estou usando codeblocks, se alguém puder me ajudar agradeço. #include <stdio.h> #define TRUE 1 #define FALSE 0 #define MAX 50 typedef struct { int conteudo; } Dados; typedef struct { Dados dados[MAX]; int topo; int base; int lim; } Pilha; Pilha pilha; Dados dados; void inicializar(Pilha pilha); int estaVazia(Pilha pilha); void empilhar(Pilha pilha, Dados dados); int main() { int num; inicializar(pilha); do { printf("\n1 - Inserir novo nodo \n2 - Remover nodo \n3 - Consultar nodo \n4 - Alterar nodo \n5 - Destruir pilha \n0 - Sair \n"); scanf("%d", &num); switch (num) { case 1: { int val; printf("\nInforme o valor:"); scanf("%d", &val); dados.conteudo = val; empilhar(pilha, dados); break; } /* case 2: { lst_imprime(m); break; } case 3: { int aux; mercado* mer; printf("\nQual codigo deseja buscar?\n"); scanf("%d", &aux); mer = busca(m, aux); printf("\nCodigo = %d Valor = %0.2f Nome do produto: = %s\n", mer->codigo, mer->valor, mer->produto); break; } case 4: { int aux; printf("\nDeseja retirar qual codigo?\n"); scanf("%d", &aux); m = lst_retira(m, aux); break; } case 5: { m = lst_libera(m); break; }*/ } } while (num != 0); return 0; } void inicializar(Pilha pilha) { pilha.base = 0; pilha.topo = pilha.base - 1; pilha.lim = MAX; } int estaVazia(Pilha pilha) { if (pilha.topo == NULL) return TRUE; else return FALSE; } void empilhar(Pilha pilha, Dados dados) { if (pilha.topo < pilha.lim) { pilha.topo = pilha.topo + 1; pilha[pilha.topo] = dados; } else printf("Pilha esta cheia!"); } /* int desempilhar(TipoPilha *pilha) { TipoNodo *nodo_que_sai_topo; int valor_nodo_que_sai_topo; if (estaVazia(pilha)) { printf("Lista Vazia !!!"); return 0; } else { nodo_que_sai_topo = pilha->topo; pilha->topo = nodo_que_sai_topo->link; valor_nodo_que_sai_topo = nodo_que_sai_topo->conteudo; free(nodo_que_sai_topo); pilha->tam--; return valor_nodo_que_sai_topo; } } int imprimir(TipoPilha *pilha) { TipoNodo *paux; paux = pilha->topo; printf("PILHA ATUAL\n"); while (paux) { printf("%d\n", paux->conteudo); paux = paux->link; } } */ Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
wnv44
Boa noite,
Estou precisando de uma ajuda ai galera, preciso fazer uma lista sequencial, e está dando erro na minha função empilhar, estou usando codeblocks, se alguém puder me ajudar agradeço.
#include <stdio.h>
#define TRUE 1
#define FALSE 0
#define MAX 50
typedef struct {
int conteudo;
} Dados;
typedef struct {
Dados dados[MAX];
int topo;
int base;
int lim;
} Pilha;
Pilha pilha;
Dados dados;
void inicializar(Pilha pilha);
int estaVazia(Pilha pilha);
void empilhar(Pilha pilha, Dados dados);
int main() {
int num;
inicializar(pilha);
do {
printf("\n1 - Inserir novo nodo \n2 - Remover nodo \n3 - Consultar nodo \n4 - Alterar nodo \n5 - Destruir pilha \n0 - Sair \n");
scanf("%d", &num);
switch (num) {
case 1:
{
int val;
printf("\nInforme o valor:");
scanf("%d", &val);
dados.conteudo = val;
empilhar(pilha, dados);
break;
}
/*
case 2:
{
lst_imprime(m);
break;
}
case 3:
{
int aux;
mercado* mer;
printf("\nQual codigo deseja buscar?\n");
scanf("%d", &aux);
mer = busca(m, aux);
printf("\nCodigo = %d Valor = %0.2f Nome do produto: = %s\n", mer->codigo, mer->valor, mer->produto);
break;
}
case 4:
{
int aux;
printf("\nDeseja retirar qual codigo?\n");
scanf("%d", &aux);
m = lst_retira(m, aux);
break;
}
case 5:
{
m = lst_libera(m);
break;
}*/
}
} while (num != 0);
return 0;
}
void inicializar(Pilha pilha) {
pilha.base = 0;
pilha.topo = pilha.base - 1;
pilha.lim = MAX;
}
int estaVazia(Pilha pilha) {
if (pilha.topo == NULL)
return TRUE;
else
return FALSE;
}
void empilhar(Pilha pilha, Dados dados) {
if (pilha.topo < pilha.lim) {
pilha.topo = pilha.topo + 1;
pilha[pilha.topo] = dados;
}
else
printf("Pilha esta cheia!");
}
/*
int desempilhar(TipoPilha *pilha) {
TipoNodo *nodo_que_sai_topo;
int valor_nodo_que_sai_topo;
if (estaVazia(pilha)) {
printf("Lista Vazia !!!");
return 0;
} else {
nodo_que_sai_topo = pilha->topo;
pilha->topo = nodo_que_sai_topo->link;
valor_nodo_que_sai_topo = nodo_que_sai_topo->conteudo;
free(nodo_que_sai_topo);
pilha->tam--;
return valor_nodo_que_sai_topo;
}
}
int imprimir(TipoPilha *pilha) {
TipoNodo *paux;
paux = pilha->topo;
printf("PILHA ATUAL\n");
while (paux) {
printf("%d\n", paux->conteudo);
paux = paux->link;
}
}
*/
Link para o comentário
Compartilhar em outros sites
0 respostass 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.