Estrutura de dados

Disponível somente no TrabalhosFeitos
  • Páginas : 6 (1366 palavras )
  • Download(s) : 0
  • Publicado : 11 de novembro de 2012
Ler documento completo
Amostra do texto
1. Crie uma função que receba uma string como parâmetro. A função deve retirar os r espaços em branco desta string.
void retiraBrancos(char *origem)
Ex: entrada be a bá
saídabeabá



#include
#include
#include


void retirabranco (char *origem){ //função que retira os espaços

for(int i=0;itopo= -1;
return p;
}

int pilha_vazia(Pilha *p)
{return (p->topo== -1);
}

void pilha_push (Pilha *p, float v)
{
if (p->topo==N-1){
printf("Capacidade da pilha esgotada.\n");
return;
}
p->topo++;
p->vet[p->topo]=v;

}

float pilha_pop (Pilha *p)
{
float v;
v=p->vet[p->topo];
p->topo--;
return v;
}void pilha_libera(Pilha *p)
{
free (p);
}

void mostra_pilha(Pilha *p)
{
printf("Conteudo da pilha.\n");
for (int i=p->topo;i>=0;i--)
printf("%0.f\n",p->vet[i]);
printf("\n");
}

void menu()
{
system ("cls");
printf("Escolha uma das opcoes do menu: \n");
printf("1. Empilha (push) \n");printf("2. Retira (pop)\n");
printf("3. Mostra a pilha\n");
printf("4. Empilha \n");
printf("5. Fim\n");
}




















#include
#include
#include
#include "pilha.h"


void empilhaPilha(Pilha *P1, Pilha *P2)
{
Pilha *AUX = pilha_cria(); // Cria uma pilha auxiliar

while(!pilha_vazia(P2))
{
float X = pilha_pop(P2); // Retira1 elemento de P2
pilha_push(P1, X); // Joga o elemento retirado de P2 em P1 para empilhar
pilha_push(AUX, X); // Joga o elemento retirado de P2 na pilha auxiliar
}

while(!pilha_vazia(AUX))
{
pilha_push(P2, pilha_pop(AUX)); // retira os elementos de AUX e volta para a pilha P2
}
}


int main()
{
Pilha *P1=pilha_cria();
Pilha*P2=pilha_cria();

pilha_push(P1,1);
pilha_push(P2,2);
pilha_push(P1,3);
pilha_push(P2,4);
pilha_push(P1,5);
pilha_push(P2,6);

empilhaPilha(P1,P2);
mostra_pilha(P1);
mostra_pilha(P2);
system("pause");
}





4. Considere a existência de um tipo abstrato de dados FILA de números reais (float) cuja interface está definida no arquivo fila.h da seguinte forma:
typedef structfila Fila;
Fila *fila_cria(void);
void fila_insere(Fila *f, float v)
float fila_retira(Fila *f);
int fila_vazia(Fila *f);
void fila_libera(Fila *f);

Sem conhecer a representação interna deste tipo abstrato e de posse apenas das funções declaradas no arquivo se interface
:
b) Implemente uma função que receba 2 filas como parâmetro. A função deve retornar uma nova Fila contendo oconteúdo intercalado de F1e F2. Depois de intercaladas as filas originais (F1 e F2) ficarão vazias.
A função deve ter o seguinte protótipo:

Fila *intercalaFilas (Fila *F1, Fila *F2)

Obs: as filas não precisam ter o mesmo tamanho


#define N 10
typedef struct fila{
int n; //fim da fila
int ini; //inicio da fila
float vet[N];
}Fila;

Fila*fila_cria(void){
Fila *f=(Fila*)malloc(sizeof(Fila));
f->n=0;
f->ini=0;
return f;
}

void fila_insere(Fila *f, float v){
int fim;
if(f->n==N){ //fila cheia
printf("Capacidade da fila esgotada.\n");
return; //retorna ao programa
}
//insere novo elemento
f->vet[f->n]=v;
f->n++;
}
intfila_vazia(Fila *f){
return(f->n==f->ini);
}


float fila_retira(Fila *f){
float v;
if(fila_vazia(f)){
printf("fila vazia.\n");
return -1;
}
//retira o lemento da fila
v=f->vet[f->ini];
f->ini++;
return v;
}


void fila_libera(Fila *f){
free(f);
}
void mostra_fila(Fila *f){
printf("Conteúdo...
tracking img