Estrutura de dados
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 e Pop 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 representam respectivamente 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 na tentativa 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; } }