Ir para conteúdo
Fórum Script Brasil
  • 0

Pilha sequencial


wnv44

Pergunta

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

Até agora não há respostas para essa pergunta

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.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...