Ir ao conteúdo
  • Cadastre-se

carlosliminha

Membro Júnior
  • Posts

    1
  • Cadastrado em

  • Última visita

Reputação

0
  1. // pilhaordena.cpp: Define o ponto de entrada para a aplicação de console. // ta ai um codigo que ordena #include "stdafx.h" #include <iostream> using namespace std; struct No { int conteudo; No* prox; }; struct Pilha { No* topo; int size; }; void push(Pilha* p, int valor) { No* aux = (No*)malloc(sizeof(No)); aux->conteudo = valor; aux->prox = p->topo; p->topo = aux; p->size++; } //funcao para desempilhar int pop(Pilha *pilha) { char valor; // cria para receber o valor da pilha enquanto faz o desempilhamento No *aux = NULL; //auxilo para receber o endereço da pilha excluida if (pilha->size == 0) { cout << "pilha vazia para retirar" << endl; return -1; } else if((pilha->topo) != NULL) { //testa primeiramente se a pilha esta vazia aux = pilha->topo->prox; //aux recebe o end da pilha valor = pilha->topo->conteudo; //valor recebe o conteudo da pilha free(pilha->topo); //exclui a pilha pilha->topo = aux; // a pilha que estava embaixo recebeu o "aux" q recebeu o end do topo da pilha; pilha->size--; return valor; //retorna o valor desempilhado } } Pilha* criaPilha() { Pilha* p = (Pilha*)malloc(sizeof(Pilha)); p->topo = NULL; p->size = 0; return p; } void imprimiPilha(Pilha* p) { No* aux; aux = p->topo; while (aux != NULL) { cout << aux->conteudo << endl; aux = aux->prox; } } bool empty(Pilha* p) { if (p->size == 0) { return true; } else { return false; } } Pilha* ordenaPilha(Pilha* p, Pilha* p2) { int elemento; int max; int aux = NULL; int c = 0, x = 0; while (p->topo != NULL) { max = NULL; while (p->topo != NULL) { elemento = pop(p); if (elemento > max) { max = elemento; } push(p2, elemento); } while (p2->size != 0) { elemento = pop(p2); //cout << elemento; if (elemento == max) { aux = elemento; } else { push(p, elemento); } } push(p2, aux); p2->size--; max = aux; } return p2; } int main() { Pilha* p1 = criaPilha(); Pilha* p2 = criaPilha(); push(p1, 2); push(p1, 1); push(p1, 4); push(p1, 3); imprimiPilha(p1); cout << endl; p1 = ordenaPilha(p1, p2); cout << endl; imprimiPilha(p1); system("pause"); return 0; }

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...