Estruturas de dados linguagem C
|
03-12-2013, 15:39
Mensagem: #1
|
|||
|
|||
Estruturas de dados linguagem C
Tenho um exercício de Estruturas de dados em linguagem C para fazer, sei que não tão aqui para fazer as atividades para os alunos, mais é muito importante para mim que possam me ajudar com essas 2 atividades.
1. Crie uma função denominada de esvazie que receba uma pilha dinâmica como parâmetro e descarte todos os elementos. Ou seja, após a chamada da função esvazie se fizermos a chamada da função empty o resultado deverá ser true. A função esvazie não deverá permitir o vazamento de memória. 2. Escrever um programa que tenha uma função que verifique se um dado valor está presente em uma pilha estática. A função receberá por parâmetro a pilha e um inteiro que será o valor do item a ser procurado. Em caso positivo, a função deve fornecer a posição do item na pilha. Caso não encontre retornar o valor -1. A pilha deve permanecer a mesma após a execução do procedimento. |
|||
03-12-2013, 16:21
Mensagem: #2
|
|||
|
|||
RE: Estruturas de dados linguagem C
(como possivelmente já leste noutros tópicos deste género...)
Qual o código que já fizeste? Onde tens exactamente a dificuldade? Pedidos de ajuda via PM serão ignorados Acordo ortográfico? Desconheço, obrigado Agradeço ao Chrome o facto de os meus posts nao terem acentos |
|||
03-12-2013, 16:57
Mensagem: #3
|
|||
|
|||
RE: Estruturas de dados linguagem C
(03-12-2013 16:21)Corvus Escreveu: (como possivelmente já leste noutros tópicos deste género...) Corvus, não fiz código algum, entrei em pilha e foi corrido diversos a vários problemas que tive e não conseguir pegar o assunto, o professor passou essa atividade e um código como base, só que li e reli e não conseguir ter noção alguma de como fazer. |
|||
03-12-2013, 17:43
Mensagem: #4
|
|||
|
|||
RE: Estruturas de dados linguagem C
(03-12-2013 16:57)Pereira Oliveira Escreveu: Corvus, não fiz código algum, entrei em pilha e foi corrido diversos a vários problemas que tive e não conseguir pegar o assunto Não quero parecer preciosista (sabe deus que dou cada pontapé na gramática que mete medo ao susto), mas não consegui entender essa parte. Poderemos talvez ajudar-te a entender o código base que o teu prof te passou e dar-te algumas dicas de como avançares, mas para isso era preciso ver o código que ele te forneceu e entender bem o que não entendes. Pedidos de ajuda via PM serão ignorados Acordo ortográfico? Desconheço, obrigado Agradeço ao Chrome o facto de os meus posts nao terem acentos |
|||
03-12-2013, 18:21
Mensagem: #5
|
|||
|
|||
RE: Estruturas de dados linguagem C
(03-12-2013 17:43)Corvus Escreveu:(03-12-2013 16:57)Pereira Oliveira Escreveu: Corvus, não fiz código algum, entrei em pilha e foi corrido diversos a vários problemas que tive e não conseguir pegar o assunto Na questão 1 tenho que desempilhar até o fim da pilha mais sem deixar desempilhar um elemento q não existe... O código que nos foi passado: #include<stdlib.h> #include<stdio.h> #include <conio.h> struct ELEMENTO_PILHA{ char valor; ELEMENTO_PILHA *anterior; }; struct PILHA{ ELEMENTO_PILHA *topo; }; void init(PILHA *p){ p->topo = NULL; } int empty(PILHA *p){ if(p->topo == NULL){ return 1; }else{ return 0; } } void push(PILHA *p,char v){ ELEMENTO_PILHA *novo = (ELEMENTO_PILHA*) malloc(sizeof(ELEMENTO_PILHA)); novo->anterior = p->topo; p->topo = novo; novo->valor = v; printf("\n Valor empilhado %c \n",v); } char pop(PILHA *p){ if(empty(p)){ printf("Pilha vazia!!!"); exit(1); }else{ char valorRetorno; ELEMENTO_PILHA *aux = p->topo; //p->topo = p->topo->anterior; p->topo = aux->anterior; valorRetorno = aux->valor; free(aux); return valorRetorno; } } int stacktop(PILHA *p){ if(empty(p)){ printf("Pilha vazia"); exit(1); }else{ return p->topo->valor; } } int string_length(char str[]){ int i; for(i=0; i<50; i++){ if(str[i]=='\0'){ return(i); } } } void buscar(PILHA *principal,PILHA *pAux,char dado){ char dadoAux; while(principal->topo != NULL){ dadoAux = pop(principal); if(dadoAux != dado ){ push(pAux,dadoAux); }else{ printf("\n Localizado:%c \n",dadoAux); } } } void listar(PILHA *p){ while(p->topo != NULL){ printf("\n Desempilhado %c",pop(p)); } } main(){ PILHA p1; PILHA p2; init(&p1); init(&p2); int cont,i; char texto[50],dado; printf("Informe um texto"); gets(texto); cont=string_length(texto); for(i=0;i<cont;i++){ push(&p1,texto[i]); } getch(); printf("\n Buscar....."); printf("\n Informe um caracter"); scanf("%c",&dado); buscar(&p1,&p2,dado); getch(); printf("\n Listar....."); listar(&p2); } |
|||
03-12-2013, 20:45
Mensagem: #6
|
|||
|
|||
RE: Estruturas de dados linguagem C
Quando colocares código num post, por favor mete o código entre [ code ] e [ /code ] (sem espaços dentro dos []), para ele ficar mais legível.
E esse foi o código que o teu professor deu? É que lhe encontro vários problemas assim visto de relance. Pedidos de ajuda via PM serão ignorados Acordo ortográfico? Desconheço, obrigado Agradeço ao Chrome o facto de os meus posts nao terem acentos |
|||
03-12-2013, 21:28
Mensagem: #7
|
|||
|
|||
RE: Estruturas de dados linguagem C
(03-12-2013 20:45)Corvus Escreveu: Quando colocares código num post, por favor mete o código entre [ code ] e [ /code ] (sem espaços dentro dos []), para ele ficar mais legível. Sim foi o codigo dado |
|||
03-12-2013, 22:57
Mensagem: #8
|
|||
|
|||
RE: Estruturas de dados linguagem C
Para a alinea 1 podes usar como base a função pop(), só que em vez de retirares um valor da pilha e devolve-lo, vais retirando até à pilha ficar vazia.
Quanto à alinea 2, não estou a entender. Tens de ser tu a criar uma nova estrutura de pilha ou usar a estrutura que está nesse código? É que a pilha do código usa char's e o enunciado da alinea 2 fala de int's. De qualquer modo, será uma variação da função buscar, em que usas um contador para verificar a posição do elemento dentro da pilha. Curiosidade minha: estão a usar o Borland C++? É que já não me lembro de ver o conio.h desde o início do século (E sim, já cá andava no tempo dos dinossaurios, mas não fui eu o culpado da sua extinção) Pedidos de ajuda via PM serão ignorados Acordo ortográfico? Desconheço, obrigado Agradeço ao Chrome o facto de os meus posts nao terem acentos |
|||
04-12-2013, 01:01
Mensagem: #9
|
|||
|
|||
RE: Estruturas de dados linguagem C
(03-12-2013 22:57)Corvus Escreveu: Para a alinea 1 podes usar como base a função pop(), só que em vez de retirares um valor da pilha e devolve-lo, vais retirando até à pilha ficar vazia. Tem que ser eu a criar uma nova a estrutura de pilha |
|||
« Mais Antigo | Mais Recente »
|
Utilizadores a ver este tópico: 2 Visitante(s)