Estrutura de dados

Disponível somente no TrabalhosFeitos
  • Páginas : 5 (1108 palavras )
  • Download(s) : 0
  • Publicado : 8 de abril de 2012
Ler documento completo
Amostra do texto
TRABALHO
DE
ESTRUTURA DE DADOS

1. Desenhe a evolução do conteúdo de uma pilha, considerando, para isso, a execução das duas seqüências de instruções:

SEQUÊNCIA 1 SEQUÊNCIA 2
c | | | | c | | | | | | b |
b | | | | b | | b | | | | c |
a | | | | a | | a | | a | | a |



2. Considerando a ilustração a seguir, mostre a seqüência de operações Push ePop que devem ser realizadas sobre as pilhas s1, s2 e s3 para que, partindo do estado inicial, possamos chegar ao estado final.

X pop (s1); Xpop (s1); Xpop(s2); Xpop(s1);
Push(s2, X); Push(s2, X); Push(s1, X); Push(s3, X);

Xpop (s1); Xpop(s1); Xpop(s2);
Push(s3, X); Push(s3, X); Push(s3, X);

3. Considere uma string formada apenas pelos caracteres "+" e "-" que representamrespectivamente as operações Push e Pop. Suponha que MAX é o número máximo de elementos que a pilha S pode conter. É solicitada a elaboração de um algoritmo que, dados uma string e MAX, indique se a string de operações será possível de ser realizada sem causar underflow ou overflow.
Underflow = É observado na tentativa de remover elementos de uma pilha vazia.
Overflow = É observado natentativa de inserir elementos em uma pilha cheia.
#include <stdio.h>
#include <conio.h>
#include <string.h>
#define MAX 3

main() {
char V[100];
int i=0;
int cont=0;
int cont1=0;
int str;
clrscr();

printf("\n Digite (+ = PUSH ) ou ( - = POP) aleatoriamente: ");
scanf("%s",V);str=strlen(V); /*<-conta os caracteres do vetor para controle da string contida em V */

while( cont<MAX || cont<0 || i<=str ) {
if( V[i] == '+' ) {
cont1++;
if( cont1 > MAX ) {
printf("\n Overflow"); break; } }else if( V[i] == '-' ) {
cont1--;
if( cont1 < 0 ) {
printf("\n Underflow "); break; } }
else {
printf("\n String OK "); break; }
i++;
cont++; }
getch();
}

4. O algoritmo apresentado abaixo utiliza uma pilha e duas filas. Vocêacompanhará sua execução, supondo as seguintes entradas: 1, 2, 3, 4, 5, 6, 7, 8, e 99. É solicitado que você indique a saída das filas f1 ef2 no final da execução do algoritmo.

5. Escreva uma função (NECESSARIAMENTE UTILIZANDO UMA PILHA) que transforma um número decimal em um número hexadecimal. Dica: se o resto for 10, 11, 12, 13, 14 ou 15, imprima, respectivamente, A, B, C, D, E ou F.#include <stdio.h>
#include <conio.h>
#define TAM 40
#define TRUE 1
#define FALSE 0
/**********************************/
struct pilha{
char v[ TAM ];
int fim; };
typedef struct pilha Pilha;

//PROTOTIPO DAS FUNCOES
/****************************/
void CriaPilha( Pilha* );
void push( Pilha*, char );
char pop( Pilha* );
char top( Pilha* );
int isempty(Pilha* );
int isfull( Pilha* );
int length( Pilha* );

void ImpNum( Pilha V[] );
//IMPLEMENTACAO DAS FUNCOES
/*********************************/
void CriaPilha ( Pilha *p )
{ p->fim = 0; }
void push ( Pilha* p, char e ) {
if( !isfull( p ) ) {
p->v[ p->fim ] = e;
p->fim++; }
else
printf("\n PILHA CHEIA! "); }char pop( Pilha* p ) {
if( !isempty( p ) ) {
p->fim--;
return p->v[ p->fim ]; }
else
printf("\n PILHA VAZIA "); }
char top( Pilha* p ) {
if( !isempty( p ) )
return p->v[ p->fim -1 ];
else
printf("\n PILHA VAZIA "); }
int isempty( Pilha* p ) {
if( p->fim == 0 )
return...
tracking img