Linux slogan
Visite também: Segurança Linux · BR-Linux.org · Dicas-L · Doode · NoticiasLinux · SoftwareLivre.org · UnderLinux



» Screenshot
Linux: Metasys Classmate
Por Gedimar
» Login
Login:
Senha:

Se você ainda não possui uma conta, clique aqui.

Esqueci minha senha



Scripts

Linux user

Publicado por DEMIS CARLOS FONSECA GOMES em 13/06/2004    [ 6339 hits ]

Login: demiscarlos, 36956 pontos

Homepage: www.portonaweb.com   


Descrição

(Pra quem já conhece meus scritps, sao todos feitos em windows, mas com algumas alterações roda muito bem em Linux).

Insere elementos, lista os elementos empilhados, exclui elementos (Pilha estática).


[ Download: Pilha Estática DEMIS CARLOS.cpp ]   [ Enviar nova versão ]

[ Esconder código-fonte ]

/* Pilha estática,
Por Dêmis Carlos Fonseca Gomes
demiscarlos@hotmail.com
Ciencia da Computacao
2º Periodo
Universidade Federal do Tocantins
Palmas-TO.
*/
#include <stdio.h>
#include <conio.h>
#include <conio.c>
#include <stdlib.h>
#include <ctype.h>

#define MAX_ELEMENTOS 5

//*variaveis globais

int pilha[MAX_ELEMENTOS];
int topo=0;

/*prototipos
============*/
void push(int);
int pop(void);
void inserir(void);
void listar(void);
void remover(void);

/* poe um elemento na pilha*/
void push(int i)
{
   if(topo>=MAX_ELEMENTOS)
    {
    printf("\t\t______________________\n");
    printf("\n\n\n\t\t\tPILHA CHEIA\n\n");
    printf("\t\t______________________\n");
   return;
   }
pilha[topo]=i;
topo++;
}
/*recupera o elemento do topo da pilha*/
int pop(void)
{
   topo--;
  if(topo<0)
   {
      printf("\t\t______________________\n");
      printf("\n\n\n\t\t\tPilha vazia\n\n");
      printf("\t\t______________________\n");
      topo++;
      return -1;
   }
  return pilha[topo];
}


/*insere um elemeto na pilha*/
void inserir(void)
{
    int elemento;

    printf("\n\nDigite o elemento a ser inserido na pilha -->>  ");
    scanf("%d",&elemento);
    fflush(stdin);
    push(elemento);
}

  void remover(void)
{
    int aux=pop();
    if(aux!=-1)
     printf("\n\nElemento removido da pilha: %d",aux);
    }

void listar(void)
{
   int i;
   printf("\n topo(%d)\n",topo);
   for(i=topo-1;i>=0;i--)
      printf("\n%d) %d ",i,pilha[i]);
}


/*principal
============*/
main()
  {
textcolor(17+128);
textbackground(6);
system("cls");
     int aux;
     char opcao;
     int i,quant;
     float max,min,*p;
     clrscr();
     for(aux=0;aux<MAX_ELEMENTOS;aux++)
      pilha[aux]=0;               /*inicializa a matriz com nulos*/
      printf("\n\n\n\n\n\n\t\t\t\tBY DEMIS CARLOS\n\n");
      printf("\t\t\tTECLE ENTER PARA CONTINUAR\n\n");
      getch();
      system("cls");
     while(1)
      {
     printf("\n\n\nO que voce deseja: Inserir(i), Listar(l), Remover(r), Sair(s) --->> ");
    opcao=getchar();
    fflush(stdin);
    opcao=toupper(opcao);
    switch(opcao)
    {
      case 'I':inserir();
          break;
      case 'L':listar();
          break;
      case 'R':remover();
          break;
      case 'S':printf("\n Fim do programa!");
               getch();
          exit(0);
    }
      }/*while*/
}

Scripts recomendados
   Script Linux recomendado Acendedor de leds pela porta paralela
   Script Linux recomendado Filas em C
   Script Linux recomendado Estrutura de dados em C -> Fila Circular com operador módulo
   Script Linux recomendado uso do if
   Script Linux recomendado Multiplicação de Matrizes com ponteiros

Comentários
[1] Comentário enviado por ron_lima em 13/06/2004 - 21:55h:

O seu programa tem dois problemas: o primeiro é a limitação da sua pilha: ela somente aceita no máximo 5 elementos. O segundo problema é a variável global. Isso faz com que o seu código não seja reaproveitável. Uma implementação interessante para uma pilha poderia ser feita utilizando-se uma lista encadeada simples, o que resolveria o problema da limitação. Existe um outro truque: ir crescendo o seu vetor dinamicamente, usando-se realloc para isso. É um truque interessante, porém com o custo de fazer com que a sua pilha sempre necessite de usar memória contígua para ser implementada, o que pode ser uma restrição severa em algumas plataformas.

[2] Comentário enviado por jllucca em 22/06/2004 - 14:40h:

Ronaldo,

isso nao chega a ser um grande problema, pois o "Demis" disse "Pilha estatica". O conceito de estatico eh que temos um numero X de espaços para aproveitar e depois disso temos que bloquear a inserçao ate algo ser removido, ou seja, temos um tamanho estatico. Mas, a sugestao foi excelente.

[]'s


Contribuir com comentário


  
Para executar esta ação você precisa estar logado no site, caso contrário, tudo o que for digitado será perdido.
Responsável pelo site: Fábio Berbert de Paula - Conteúdo distribuído sob licença GNU FDL
Site hospedado por:

Viva o Linux

A maior comunidade Linux da América Latina! Artigos, dicas, tutoriais, fórum, scripts e muito mais. Ideal para quem busca auto-ajuda em Linux.