C, C++, C#

Pilhas com String em C/C++

163 views
2 Comentários
0
(0)
O Mesmo princípio de Pilhas com inteiros, porém, agora com Strings

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

/////////////////////////////////////////////////////////////
////////////////////////// defines //////////////////////////
/////////////////////////////////////////////////////////////

#define MAX 100          // mudar tamanho da pilha
typedef char TIPO_STACK; // mudar o tipo de pilha

/////////////////////////////////////////////////////////////
///////////////////// variaveis globais /////////////////////
/////////////////////////////////////////////////////////////

TIPO_STACK stack[MAX];
int top = -1;

/////////////////////////////////////////////////////////////
/////////////////// protótipos de funções ///////////////////
/////////////////////////////////////////////////////////////

void pop( TIPO_STACK * );
void push( TIPO_STACK  );

////////////////////////////FUNÇÃO///////////////////////////
//////////////////////////// MAIN ///////////////////////////
/////////////////////////////////////////////////////////////
int main(void)
{
         char fraseOriginal[MAX], fraseInvertida[MAX];
         int i, tamanho;
         printf(“n=== Checar existencia de palindromo ===nn    Entre com a frase a ser checada n(sem caracteres especiais e sem espacos) nnFrase: “);
         scanf(“%s”, fraseOriginal);

         //// coloca frase na pilha ////
         tamanho = strlen( fraseOriginal );

         for( i = 0; i < tamanho; i++ )
                   push( fraseOriginal[i] );
          //// tira frase da pilha, agora invertida ////
          for( i = 0; i < tamanho; i++ )
                    pop( &fraseInvertida[i] );  
          fraseInvertida[tamanho] = ‘{FONTE}’; // finaliza string invertida

          //// mostra frase invertida ////
          printf(“Frase Invertida: %s”, fraseInvertida);
          system(“Pause”);
          //// checa se as duas strings sao iguais ////
          if( !strcmp( fraseOriginal, fraseInvertida) )
                     printf(“nResultado: Confere, palindromo existentenn”);
          else
                     printf(“nResultado: Nao conferenn”);
           return ( 0 );
} // fim main   

////////////////////////////FUNÇÃO///////////////////////////
/// Nome: pop()                                           ///
/// Descricao: remove elemento da pilha                   ///
/////////////////////////////////////////////////////////////

void pop( TIPO_STACK *elemento )
{
          if( top == -1 ) // pilha vazia
                   printf(“npilha vazian”);
          else {
                    *elemento = stack[top];
                    top–;
          }
} // fim funcao

////////////////////////////FUNÇÃO///////////////////////////
/// Nome: push()                                                    ///
/// Descricao: insere elemento na pilha                    ///
//////////////////////////////////////////////////////////////

void push( TIPO_STACK elemento )
{
          if( top == MAX ) // pilha cheia
                    printf(“npilha cheian”);
          else {
      top++;  
                    stack[top] = elemento;
          }
} // fim funcao

O que você achou disso?

Média da classificação 0 / 5. Número de votos: 0

Nenhum voto até agora! Seja o primeiro a avaliar este post.

Como você achou esse post útil...

Ajude o site a crescer compartilhando o conteúdo

Lamentamos que este post não tenha sido útil para você!

Vamos melhorar este post!

Diga-nos, como podemos melhorar este post?

Artigos Relacionados

Nenhum resultado encontrado.

2 Comentários. Deixe novo

Gostou do conteúdo? Deixe seu comentário

Veja também

Menu