void push(int i){ if (num<max) vet[num++]=i; else { printf(">>> Erro: overflow na pilha!!!\n"); printf("%d nao foi empilhado!!!
|
|
- Luís Cesário Canário
- 6 Há anos
- Visualizações:
Transcrição
1 Estruturas de Dados Lista 2: soluções J. L. Rangel 1. Suponha que uma pilha é representada através de um vetor vet e de um inteiro num. As declarações podem ser #define MAX 100 int vet[max], num; Escreva uma função push que se recusa a acrescentar um elemento à pilha se não houver espaço suficiente no vetor vet, e, nesse caso, imprime uma mensagem apropriada de erro. void push(int i){ if (num<max) vet[num++]=i; else { printf(">>> Erro: overflow na pilha!!!\n"); printf("%d nao foi empilhado!!!\n",i); 2. Com as mesmas declarações de (1), imagine que resolvemos separar as duas funções da função pop, usando duas funções, int top(void); void pop1(void); ficando para top a função de dizer qual é o elemento do topo da pilha, e para pop1 a função de retirar este elemento, sem devolver nenhum resultado. (Este arranjo seria usado quando queremos ver o elemento do topo antes de resolver retirá-lo de lá.) Escreva as funções top e pop1. Temos, em pilha1.h, /* top e pop1 substituem a velha pop */ int top(void); void pop1(void); e, em pilha1.c, /* top não desempilha */ int top(void) { return vet[num-1]; /* pop1 só desempilha */ void pop1(void){ num--; Além disso, na aplicação xpilha1.c, as chamadas de pop devem ser substituídas: Estruturas de Dados J.L. Rangel 1
2 while(!vazio()) { printf("%d ", top()); pop1(); printf("\n"); 3. Adapte as funções de (1) e de (2) para o caso em que o tipo PILHA é declarado por #define MAX 100 struct pilha { int vet[max], num; ; typedef struct pilha PILHA; Temos: void push(pilha *p, int i){ if (p->num<max) p->vet[p->num++]=i; else { printf(">>> Erro: overflow na pilha!!!\n"); printf("%d nao foi empilhado!!!\n",i); int top(pilha *p){ return p->vet[p->num-1]; void pop1(pilha *p){ p->num--; int vazio(pilha *p){ return p->num==0; A aplicação também deve ser reescrita, uma vez que a função pop foi substituída por top e pop1 na interface pilha2.h 4. Redefina as operações do tipo PILHA, ou seja, init, push, pop, vazia e show quando o tipo PILHA é declarado por #define MAX 100 struct pilha { int vet[max], num; ; typedef struct pilha *PILHA; (Note que neste caso, o tipo PILHA já é definido como o endereço da estrutura que contém a pilha propriamente dita.) A principal alteração é nos cabeçalhos das funções, com a retirada da estrela (*). Os cabeçalhos em pilha2.h passam a ser Estruturas de Dados J.L. Rangel 2
3 void push(pilha p, int i); int pop(pilha p); int vazio(pilha p); void show(pilha p); Note que as referências a p->vet e a p->num não precisam ser alteradas, porque o tipo do parâmetro p continua sendo struct { *. Além disso, como uma declaração PILHA p; não aloca espaço para a pilha propriamente dita (ou seja a estrutura struct pilha), isto deve ser feito por uma chamada à função init, que pode ser: PILHA init(void) { PILHA p = (PILHA) malloc(sizeof(struct pilha)); p->num=0; return p; A alteração no cabeçalho de init é necessária porque o valor inicial de cada variável PILHA deve ser dado por esta função. 5. Suponha que vamos implementar uma pilha de caracteres usando uma lista encadeada, com as declarações typedef struct no NO, *PT; struct no { char elem; PT prox; ; typedef PT PILHA; Redefina as operações do tipo PILHA, adaptadas para este caso, em que os elementos da pilha são caracteres. A solução é semelhante a pilha3.h/pilha3.c. Mostraremos apenas as alterações no cabeçalho das operações, adaptando pilha3.h. /* pilha3.h adaptado para pilha de char */ typedef struct no *PILHA; struct no{ char elem; PILHA prox; ; void init(pilha *p); void push(pilha *p, char i); char pop(pilha *p); int vazio(pilha *p); void show(pilha *p); Estruturas de Dados J.L. Rangel 3
4 6. Idem, supondo que vamos usar operações top e pop1 em vez de pop, como em (2). Novamente, vamos mostrar apenas as alterações no cabeçalho das operações, adaptando pilha3.h. /* pilha3.h adaptado para pilha de char */ typedef struct no *PILHA; struct no{ char elem; PILHA prox; ; void init(pilha *p); void push(pilha *p, char i); char top(pilha *p); void pop(pilha *p); int vazio(pilha *p); void show(pilha *p); 7. Idem, para uma pilha de elementos do tipo struct info *, sendo o tipo struct info declarado por struct info { char nome[80]; int matricula; ; Vamos apresentar duas soluções completas. Solução 1: neste caso, o tipo struct info será conhecido do programador da aplicação, e as operações push e pop vão tratar valores do tipo struct info *. Os arquivos são pinfo1.h, pinfo1.c (interface e implementação da pilha) e xpinfo1.c (um exemplo de aplicação) Arquivo: pinfo1.h /* pinfo1.h */ /* tipo pilha de struct info * */ typedef struct info { char nome[80]; int matricula; INFO, *PINFO; typedef struct no *PILHA; /* tipo struct no sera' definido em pinfo1.c */ void init(pilha *p); Estruturas de Dados J.L. Rangel 4
5 void push(pilha *p, PINFO pi); PINFO top(pilha *p); void pop1(pilha *p); int vazia(pilha *p); void show(pilha *p); /* cria um NO com nome=n e matricula=m, e retorna endereco */ PINFO criainfo(char *n, int m); Arquivo: pinfo1.c /* pinfo1.c */ #include "pinfo1.h" #include <stdio.h> #include <string.h> typedef struct no NO, *PT; struct no{ PINFO elem; PT prox; ; void init(pilha *p) { *p=null; /* auxiliar */ PT cria(pinfo pi, PT px) { PT p=(pt)malloc(sizeof(no)); p->elem=pi; p->prox=px; return p; void push(pilha *p, PINFO pi) { *p=cria(pi,*p); /* assume que pilha nao esta' vazia */ PINFO top(pilha *p) { return (*p)->elem; void pop1(pilha *p) { PT q=*p; *p=q->prox; free(q); Estruturas de Dados J.L. Rangel 5
6 int vazia(pilha *p) { return *p==null; void show(pilha *p) { PT q; printf("show: "); for (q=*p; q!=null; q=q->prox) printf("[%s:%d] ",q->elem->nome, q->elem->matricula); printf("\n"); PINFO criainfo(char *n, int m) { PINFO pi=(pinfo)malloc(sizeof(info)); strcpy(pi->nome,n); pi->matricula=m; return pi; Arquivo: xpinfo1.c /* xpinfo1.c */ #include <stdio.h> #include "pinfo1.h" int main(void) { PILHA p1; PINFO pi; init(&p1); push(&p1,criainfo("maria",23)); push(&p1,criainfo("marcelo",27)); push(&p1,criainfo("rodolfo",33)); show(&p1); while (!vazia(&p1)) { pi=top(&p1); printf("[%s,%d]\n",pi->nome,pi->matricula); pop1(&p1); return 0; Solução 2: neste caso, o tipo struct info não será conhecido do programador da aplicação, e as operações push e pop vão tratar valores dos tipos char * (nomes) e int (matrículas). Os arquivos são pinfo2.h, pinfo2.c (interface e implementação da pilha) e xpinfo2.c (um exemplo de aplicação) Arquivo: pinfo2.h /* pinfo2.h */ /* tipo pilha de struct info * */ typedef struct no *PILHA; /* tipo struct no sera' definido em pinfo1.c */ Estruturas de Dados J.L. Rangel 6
7 void init(pilha *p); /* push recebe como entrada nome n e matricula m */ void push(pilha *p, char *n, int m); /* top fornece como saidas nome n e matricula *m */ void top(pilha *p, char *n, int *m); void pop1(pilha *p); int vazia(pilha *p); void show(pilha *p); Arquivo: pinfo2.c /* pinfo2.c */ #include "pinfo2.h" #include <stdio.h> #include <string.h> typedef struct info { char nome[80]; int matricula; INFO, *PINFO; typedef struct no NO, *PT; struct no{ PINFO elem; PT prox; ; /* cria um NO com nome=n e matricula=m, e retorna endereco */ PINFO criainfo(char *n, int m); void init(pilha *p) { *p=null; /* auxiliar */ PT cria(pinfo pi, PT px) { PT p=(pt)malloc(sizeof(no)); p->elem=pi; p->prox=px; return p; /* push recebe como entrada nome n e matricula m */ void push(pilha *p, char *n, int m) { *p=cria(criainfo(n,m),*p); Estruturas de Dados J.L. Rangel 7
8 /* top assume que pilha nao esta' vazia */ /* top fornece como saidas nome n e matricula *m */ void top(pilha *p, char *n, int *m) { strcpy(n,(*p)->elem->nome); *m=(*p)->elem->matricula; void pop1(pilha *p) { PT q=*p; *p=q->prox; free(q); int vazia(pilha *p) { return *p==null; void show(pilha *p) { PT q; printf("show: "); for (q=*p; q!=null; q=q->prox) printf("[%s:%d] ",q->elem->nome, q->elem->matricula); printf("\n"); PINFO criainfo(char *n, int m) { PINFO pi=(pinfo)malloc(sizeof(info)); strcpy(pi->nome,n); pi->matricula=m; return pi; Arquivo: xpinfo2.c /* xpinfo2.c */ #include <stdio.h> #include "pinfo2.h" int main(void) { PILHA p1; char n[80]; int m; init(&p1); push(&p1,"maria",23); push(&p1,"marcelo",27); push(&p1,"rodolfo",33); show(&p1); while (!vazia(&p1)) { top(&p1,n,&m); printf("[%s,%d]\n",n,m); pop1(&p1); Estruturas de Dados J.L. Rangel 8
9 return 0; 8. Suponha uma maquina de calcular que trabalha apenas com números não negativos, e que tem apenas as quatro operações: soma, subtração, produto e divisão inteira. A máquina tem 16 teclas, representadas pelos caracteres: * / C E onde C representa clear, e E representa enter, que é usada indicar que vai ser fornecido entrado um número. A máquina usa notação polonesa sufixo, aquela em que o operador vem depois dos operandos. Escreva um programa que usa uma pilha de inteiros para simular a máquina: cada caracter que entra é tratado, e a resposta é o conteúdo da pilha da máquina. Inicialmente, a pilha da máquina está vazia. As ações correspondentes a cada caracter são: i=0, 9 troque o valor x do topo da pilha por x*10+i E empilhe um 0 op=+,-,*,/ tire dois elementos y e x do topo da pilha, e empilhe x op y C esvazia a pilha. Por exemplo, se as entradas fossem sucessivamente E 9 0 E 2 0 E 1 5 E * E 5 + / a pilha teria sucessivamente os seguintes conteúdos: (inicial) [ ] E [ 0 ] 9 [ 9 ] 0 [ 90 ] E [ 90 0 ] 2 [ 90 2] 0 [ ] E [ ] 1 [ ] 5 [ ] E [ ] 1 [ ] 3 [ ] - [ ] * [ ] E [ ] 5 [ ] + [ ] / [ 2 ] indicando o resultado 2 de * 5 + /, ou seja, (90/((20*(15-13))+5)) na notação habitual A solução usa pilha3.h/pilha3.c do Capítulo 4, substituindo a aplicação por calc.c, mostrado a seguir: /* calc.c */ /* usa a pilha definida por pilha3.h/pilha3.c, no Capitulo 4 */ #include "pilha3.h" Estruturas de Dados J.L. Rangel 9
10 /* transforma digito em seu valor c deve ser um digito: 0, 1,... 9 */ int valor(char c) { return c-'0'; /* '0'=48 */ /* simula maquina com entrada s */ void maquina(char *s) { PILHA p; int x,y; int i=0; init(&p); printf(" "); show(&p); while (s[i]!='\0') { switch(s[i]) { case 'C': init(&p); break; case 'E': push(&p,0); break; case '+': y=pop(&p); x=pop(&p); push(&p,x+y); break; case '-': y=pop(&p); x=pop(&p); push(&p,x-y); break; case '*': y=pop(&p); x=pop(&p); push(&p,x*y); break; case '/': y=pop(&p); x=pop(&p); push(&p,x/y); break; default: /* deve ser um digito */ x=valor(s[i]); y=pop(&p); push(&p,y*10+x); printf("[%c] ",s[i]); show(&p); i++; Estruturas de Dados J.L. Rangel 10
11 int main(void) { /* entrada exemplo */ char ent[]="e90e20e15e13-*e5+/"; maquina(ent); return 0; Note que a função show de pilha3.c mostra o conteúdo da pilha na ordem inversa da apresentada no enunciado do exercício. 9. Suponha que uma pilha é declarada por typedef struct no NO, *PT; struct no { char elem; PT prox; ; typedef PT PILHA; para representar uma pilha de caracteres através de uma lista encadeada. Escreva uma função com protótipo int conta(pilha p); que tem como resultado o número de elementos da pilha. Na realidade, esta função conta o número de nós em uma lista encadeada qualquer. int conta(pilha p) { int i=0; PT q=p; while (q!=null) { i++; q=q->prox; return i; Uma solução recursiva poderia ser int conta(pilha p) { if (p==null) return 0; /* else */ return conta(p->prox) +1; 10. Suponha uma pilha de caracteres, cuja interface está no arquivo pilha.h, cujo conteúdo é typedef struct no *PILHA; PILHA init(void); void push(pilha *p, char i); char pop(pilha *p); int vazia(pilha p); void show(pilha p); Escreva um programa que lê uma cadeia s, empilha os caracteres de s em uma pilha p, retira os caracteres de p para uma outra cadeia t, de forma que os caracteres de t são os mesmos caracteres de s em forma invertida. Finalmente, o programa imprime s e t. Estruturas de Dados J.L. Rangel 11
12 (Para testar este programa, será necessário terminar a implementação da pilha (ou seja, o arquivo pilha.c), completando as declarações de struct no e das funções.) Podemos ter #include "pilha.h" int main(void) { char s[80], t[80]; PILHA p=init(); int i=0; printf(">"); scanf("%s",s); while (s[i]!='\0') { push(&p,s[i]); i++; i=0; while (!vazia(p)) { t[i]=pop(&p); i++; t[i]='\0'; /* para fechar t */ printf("original: %s\ninvertida: %s\n,s,t); return 0; (abr 00) Estruturas de Dados J.L. Rangel 12
As duas soluções a seguir são exemplos da variedade de soluções admissíveis.
INF 1620- Estruturas de Dados Soluções das questões da P2-08/11/00 1. Queremos programar uma pilha em que a cada elemento devem corresponder duas informações: Escreva os tipos necessários para esta implementação,
Leia maisEstruturas de Dados. Módulo 11 Pilhas. 9/8/2005 (c) Dept. Informática - PUC-Rio 1
Estruturas de Dados Módulo 11 Pilhas 9/8/2005 (c) Dept. Informática - PUC-Rio 1 Referências Waldemar Celes, Renato Cerqueira, José Lucas Rangel, Introdução a Estruturas de Dados, Editora Campus (2004)
Leia maisSCC Algoritmos e Estruturas de Dados I
SCC 202 - Algoritmos e Estruturas de Dados I TAD Pilha Sequencial Estática e Encadeada Dinâmica 17 e 19/8/2010 Exercício: Implementação da pilha sequencial e estática Declaração em C escondendo a ED do
Leia maisSCC 202 Algoritmos e Estruturas de Dados I. Pilhas (Stacks) (implementação dinâmica)
SCC 202 Algoritmos e Estruturas de Dados I Pilhas (Stacks) (implementação dinâmica) Operações alocação encadeada dinâmica typedef struct elem{ tipo_info info; struct elem *lig; tipo_elem; typedef struct{
Leia maisJ. L. Rangel 1. provar que uma árvore binária de altura h tem, no mínimo, h+1 nós, e, no máximo, 2 h+1 1.
Estruturas de Dados Algumas Respostas da Lista 3. J. L. Rangel 1. provar que uma árvore binária de altura h tem, no mínimo, h+1 nós, e, no máximo, 2 h+1 1. (número mínimo) Se a árvore tem altura h, deve
Leia maisINF 1620 P2-01/11/03 Questão 1 Nome:
INF 1620 P2-01/11/03 Questão 1 Considere a implementação de uma lista encadeada para armazenar as notas dos alunos de uma turma dada pelo tipo abaixo: struct lista { char nome[81]; int mat; float p1, p2,
Leia maisPRIMEIRA AVALIAÇÃO IDENTIFICAÇÃO. Nome: 04/05/2011
UNIVRSIDAD FDRAL DO RIO GRAND DO SUL INSTITUTO D INFORMÁTICA Bacharelado em Ciência da Computação e ngenharia da Computação INF 01203 struturas de Dados Profa. Renata Galante (galante@inf.ufrgs.br ) PRIMIRA
Leia maisINF1007 Programação 2 9 Pilhas. (c) Dept. Informática - PUC-Rio 1
INF1007 Programação 2 9 Pilhas (c) Dept. Informática - PUC-Rio 1 Tópicos Principais Introdução Interface do tipo pilha Exemplo de uso: verificação de expressões Implementação de pilha com lista encadeada
Leia maisINF 1007 Programação II
INF 1007 Programação II Aula 13 Pilhas Edirlei Soares de Lima Pilha Uma pilha é uma estrutura de dados dinâmica na qual novos elementos são sempre inseridos no topo da pilha e acessados
Leia maisAlgoritmos e Estruturas de Dados I
Algoritmos e Estruturas de Dados I Prof. Daniel M. Martin (daniel.martin@ufabc.edu.br) Aula 8 Aplicação de Fila Calcular a distância entre pessoas no Facebook Aplicação de Fila Calcular a distância entre
Leia maisPilha. SCC-202 Algoritmos e Estruturas de Dados I. Lucas Antiqueira
Pilha SCC-202 Algoritmos e Estruturas de Dados I Lucas Antiqueira Pilha O que é? Para que serve? 2 Problema: chamada de sub-rotinas Rotina A 1 print A 2 call C 3 call B 4 call D 5 return Rotina B 1 call
Leia maisIntrodução a Programação. Tipos Abstratos de Dados Implementando Pilha e Fila
Introdução a Programação Tipos Abstratos de Dados Implementando Pilha e Fila Abstração Abstração é o processo ou resultado de generalização por redução do conteúdo da informação de um conceito ou fenômeno
Leia maisEstruturas de Dados Aula 11: TAD Pilha
Estruturas de Dados Aula 11: TAD Pilha Fontes Bibliográficas Livros: Projeto de Algoritmos (Nivio Ziviani): Capítulo 3; Introdução a Estruturas de Dados (Celes, Cerqueira e Rangel): Capítulo 10; Estruturas
Leia maisEstruturas de Dados. Módulo 4 Funções. 9/8/2005 (c) Dept. Informática - PUC-Rio 1
Estruturas de Dados Módulo 4 Funções 9/8/2005 (c) Dept. Informática - PUC-Rio 1 Referências Waldemar Celes, Renato Cerqueira, José Lucas Rangel, Introdução a Estruturas de Dados, Editora Campus (2004)
Leia maisAlgoritmos e Programação
Algoritmos e Programação Aula 3 Introdução a Linguagem C Profa. Marina Gomes marinagomes@unipampa.edu.br 1 Aula de Hoje - Criar programas simples em C utilizando a estrutura básica; - Declarar variáveis;
Leia maisPilhas e Filas Encadeadas. Algoritmos e Estruturas de Dados I
Pilhas e Filas Encadeadas Algoritmos e Estruturas de Dados I Pilha Lista linear: pilha Represente graficamente o funcionamento da pilha, representando a pilha vazia, a entrada e a saída de elementos Quais
Leia maisUniversidade Estadual Paulista Júlio de Mesquita Filho UNESP
Introdução à Computação II AULA 16 BCC Noturno - EMA896115B Prof. Rafael Oliveira olivrap@gmail.com Universidade Estadual Paulista Júlio de Mesquita Filho UNESP Rio Claro 2014 (Sem 2) Estruturas de Dados
Leia maisDepartamento de Informática - PUC-Rio INF 1007 Programação 2 P3 23/06/2010
Departamento de Informática - PUC-Rio INF 1007 Programação 2 P3 23/06/2010 Aluno: Instruções: 1) Escreva seu nome completo, matrícula e turma em todas as folhas desta prova; 2) A prova deve ser completamente
Leia maisEstrutura de dados 2. Ponteiro. Prof. Jesuliana N. Ulysses
1 3 Estrutura de dados 2 Ponteiro Ponteiro 2 O ponteiro é um tipo de dado como int, char ou float. A diferença do ponteiro ponteiro guardará um endereço de memória. Por meio deste endereço pode-se acessar
Leia maisAtividade de laboratório listas encadeadas simples
Atividade de laboratório listas encadeadas simples 1. Estrutura básica Uma lista encadeada simples é uma estrutura de dados composta de uma seqüência de estruturas elementares chamadas nós. Cada nó contém
Leia maisMódulo 10 Listas Encadeadas
Estruturas de Dados Módulo 10 Listas Encadeadas 9/8/2005 (c) Dept. Informática - PUC-Rio 1 Referências Waldemar Celes, Renato Cerqueira, José Lucas Rangel, Introdução a Estruturas de Dados, Editora Campus
Leia maisEstruturas de Dados. Módulo 12 - Filas. 9/8/2005 (c) Dept. Informática - PUC-Rio 1
Estruturas de Dados Módulo 12 - Filas 9/8/2005 (c) Dept. Informática - PUC-Rio 1 Referências Waldemar Celes, Renato Cerqueira, José Lucas Rangel, Introdução a Estruturas de Dados, Editora Campus (2004)
Leia maisEXERCÍCIO DE SONDAGEM TURMA 02 SEMESTRE DATA: 01/11/2016. Matrícula Nome Nota
Universidade Federal de Campina Grande Centro de Engenharia Elétrica e Informática Departamento de Sistemas e Computação Disciplina: Técnicas de Programação Prof.: José Eustáquio Rangel de Queiroz EXERCÍCIO
Leia maisINF1007: Programação 2 8 Listas Encadeadas. (c) Dept. Informática - PUC-Rio 1
INF1007: Programação 2 8 Listas Encadeadas (c) Dept. Informática - PUC-Rio 1 Tópicos Principais Motivação Listas encadeadas Implementações recursivas Listas de tipos estruturados (c) Dept. Informática
Leia maisEstruturas de Dados Aula 16: Árvores com Número Variável 13/06/2011
Estruturas de Dados Aula 16: Árvores com Número Variável de Filhos 13/06/2011 1 Fontes Bibliográficas Livros: Introdução a Estruturas de Dados (Celes, Cerqueira e Rangel): Capítulo 13; Projeto de Algoritmos
Leia maisSCC Algoritmos e Estruturas de Dados I
SCC 202 - Algoritmos e Estruturas de Dados I TAD Pilha Lembrem...TADs são tipos definidos em termos de seu comportamento e não de sua representação (que pode variar na busca de eficiência) 12/8/2010 Pilha
Leia maisComputadores Digitais 2. Prof. Rodrigo de Souza Couto
Computadores Digitais 2 Linguagens de Programação DEL-Poli/UFRJ Prof. Miguel Campista Tópicos Listas Encadeadas Introdução às listas encadeadas Manipulação de elementos Implementações recursivas Listas
Leia maisInstituto de C. Filas. Luis Martí Instituto de Computação Universidade Federal Fluminense -
Instituto de C Filas Luis Martí Instituto de Computação Universidade Federal Fluminense lmarti@ic.uff.br - http://lmarti.com Referências Waldemar Celes, Renato Cerqueira, José Lucas Rangel, Introdução
Leia maisPilha. SCC Algoritmos e Estruturas de Dados I. Prof. Fernando V. Paulovich. *Baseado no material do Prof. Gustavo Batista
Pilha SCC0202 - Algoritmos e Estruturas de Dados I Prof. Fernando V. Paulovich *Baseado no material do Prof. Gustavo Batista http://www.icmc.usp.br/~paulovic paulovic@icmc.usp.br Instituto de Ciências
Leia maisCES-11. Pilhas Definição Operações Filas. Operações Deques. Definição. Operações
CES-11 Pilhas Definição Operações Filas Definição Operações Deques Definição Operações PILHAS, FILAS E DEQUES As listas lineares admitem inserção e eliminação em qualquer posição. Pilhas, filas e deques
Leia maisProf. Jesus José de Oliveira Neto
Prof. Jesus José de Oliveira Neto É uma das estruturas de dados mais simples A idéia fundamental da pilha é que todo o acesso a seus elementos é feito através do seu topo. Assim, quando um elemento novo
Leia maisRevisão: Tipo Abstrato de Dados Recursividade
Algoritmos e Estrutura de Dados II Revisão: Tipo Abstrato de Dados Recursividade Prof a Karina Oliveira kkco@dei.unicap.br Introdução Estudo das estruturas de dados envolve dois objetivos complementares:
Leia maisstruct Nodo { int struct Nodo typedef struct Nodo *PNodo; PNodo ConstruirPilha () { int PNodo Criar printf scanf while Push printf scanf return
Considere as declarações de Nodo e PNodo (adaptada dos apontamentos) seguintes: struct Nodo { int Elemento; struct Nodo *Ant; ; typedef struct Nodo *PNodo; Copiar para o ficheiro PilhaInteiros.h e adaptar
Leia mais12. Filas Interface do tipo fila
12. Filas W. Celes e J. L. Rangel Outra estrutura de dados bastante usada em computação é a fila. Na estrutura de fila, os acessos aos elementos também seguem uma regra. O que diferencia a fila da pilha
Leia maisLista: conceito, representação e algoritmos
Lista: conceito, representação e algoritmos SCC0502 Algoritmos e Estruturas de Dados I Prof. Thiago A. S. Pardo Problema Imaginem a situação da automação de uma biblioteca Todos os livros devem ser cadastrados
Leia maisInstituto de C. Linguagem C: Listas. Luis Martí Instituto de Computação Universidade Federal Fluminense -
Instituto de C Linguagem C: Listas Luis Martí Instituto de Computação Universidade Federal Fluminense lmarti@ic.uff.br - http://lmarti.com Listas Encadeadas Definição Funções básicas Tópicos Principais
Leia maisAlgoritmos e Estruturas de Dados I
Algoritmos e Estruturas de Dados I Prof. Daniel M. Martin (daniel.martin@ufabc.edu.br) Aula 9 (laboratório) O Labirinto Descrição do problema O problema é achar o caminho entre dois pontos de interesse
Leia maisEstruturas de Dados Filas
Estruturas de Dados Filas Roteiro Introdução Definição de Fila (Queue) Aplicações Operações sobre Fila Implementação de Fila Com vetores Com listas encadeadas Exercícios Introdução Estamos acostumados
Leia maisCap. 3 Entrada e Saída e Controle de Fluxo
Programação de Computadores II Cap. 3 Entrada e Saída e Controle de Fluxo Livro: Waldemar Celes, Renato Cerqueira, José Lucas Rangel. Introdução a Estruturas de Dados, Editora Campus (2004) Slides adaptados
Leia maisTipos abstratos de dados
Pilhas Considere uma pilha de elementos. O tipo do elemento é definido dentro de um arquivo de nome elemento.h. Portanto a definição é externa ao programa. Podemos fazer as funções de pilha abstraindo
Leia maisINF 1620 P1-13/09/02 Questão 1 Nome:
INF 1620 P1-13/09/02 Questão 1 Considere que o cálculo da multa para o pagamento de um determinado imposto varia de acordo com a tabela a seguir: Valor do Imposto Original Multa por mês de atraso até R$
Leia maisPilhas e Filas. Nádia Félix e Hebert Coelho
Pilhas e Filas Nádia Félix e Hebert Coelho Vários slides foram adaptados de Nina Edelwais e Renata Galante Estrutura de Dados Série de Livros Didáticos - Informática - UFRGS Pilhas e filas Listas lineares
Leia maisEstruturas. K&R: Capitulo 6. Estruturas IAED, 2014/2015. Introdução às Estruturas Estruturas e Funções Vectores de Estruturas Typedef Exemplo
Estruturas K&R: Capitulo 6 Estruturas Introdução às Estruturas Estruturas e Funções Vectores de Estruturas Typedef Exemplo 2 1 Motivação Definir uma representação agregada na linguagem C para manipular
Leia maisJ. L. Rangel 1. Escreva um programa em C que lê três números inteiros do teclado, e imprime os três números em ordem crescente.
Estruturas de Dados Lista 1: soluções J. L. Rangel 1. Escreva um programa em C que lê três números inteiros do teclado, e imprime os três números em ordem crescente. #include int leint(void)
Leia mais//Declaração do TAD pilha. // As operações definidas para esse tipo são criar() push() pop() destroi() // typedef struct pilha TPilha;
Declaração do TAD pilha. As operações definidas para esse tipo são criar() push() pop() destroi() typedef struct pilha TPilha; cria a pilha e retorna o ponteiro para o tipo Pilha TPilha* criar(void); Empilha
Leia maisMódulo 3 Controle de Fluxo
Estruturas de Dados Módulo 3 Controle de Fluxo 16/8/2005 (c) Marco A. Casanova - PUC-Rio 1 Referências Waldemar Celes, Renato Cerqueira, José Lucas Rangel, Introdução a Estruturas de Dados, Editora Campus
Leia maisPilhas. Prof. Rui Jorge Tramontin Jr. UDESC - Rui J. Tramontin Jr. 1
Pilhas Prof. Rui Jorge Tramontin Jr. UDESC - Rui J. Tramontin Jr. 1 Índice Introdução Operações de uma pilha Aplicações TAD da Pilha em C UDESC - Rui J. Tramontin Jr. 2 Introdução Pilha é uma lista na
Leia maisINF 1620 P3-02/07/02 Questão 1 Nome:
INF 1620 P3-02/07/02 Questão 1 Considere um arquivo texto que contém os nomes e as notas dos alunos de uma disciplina. As informações de cada aluno ocupam duas linhas do arquivo: a primeira linha contém
Leia mais- Estruturas e aplicações
1 MCTA028 Programação Estruturada - Estruturas e aplicações Material preparado a partir de slides dos profs. Jesús Mena-Chalco e Fabrício Olivetti Luiz Rozante 3Q-2018 Estruturas (=registros) 2 Linguagem
Leia maisAluno: Valor Nota Q1 3.0 Q2 2.5 Q3 2.5 Q4 2.0 Total 10.0
P4 Programação II 2012.2 Departamento de Informática/PUC- Rio Aluno: Matrícula: Turma: 1. A prova é sem consulta e sem perguntas. A interpretação do enunciado faz parte da prova. 2. A prova deve ser completamente
Leia maisINF 1620 P3-27/11/04 Questão 1 Nome:
INF 1620 P3-27/11/04 Questão 1 Considere um arquivo texto com as notas dos alunos de uma disciplina. Os dados de cada aluno são armazenados em duas linhas do arquivo: uma com o seu nome (cadeia com até
Leia maisINF1007: Programação 2. 0 Revisão. 06/08/2015 (c) Dept. de Informática - PUC-Rio 1
INF1007: Programação 2 0 Revisão 06/08/2015 (c) Dept. de Informática - PUC-Rio 1 Tópicos Principais Variáveis e Constantes Operadores e Expressões Entrada e Saída Tomada de Decisão Construção com laços
Leia mais3. Linguagem de Programação C
Introdução à Computação I IBM1006 3. Linguagem de Programação C Prof. Renato Tinós Departamento de Computação e Matemática (FFCLRP/USP) 1 Principais Tópicos 3.2. Estrutura de Programas e Representação
Leia maisApontadores/ponteiros
Apontadores/ponteiros 1 Apontadores/ponteiros 1. Um ponteiro pode ser manipulado como sendo um vetor. #include int v[5] = { 10, 20, 30, 40, 50 ; int p, i; p = v; for (i = 1; i < 5; i++) printf
Leia maisArvores, Percursos não recursivos, Arvores heterogêneas. Aula 19
Arvores, Percursos não recursivos, Arvores heterogêneas Aula 19 Arvores binárias encadeadas Percorrer uma árvore é uma operação muito comum e seria útil encontrar um método mais eficiente para implementar
Leia maisListas Ligadas (Encadeadas) Listas Simplesmente Encadeadas
Listas Ligadas (Encadeadas) Matrizes são estruturas de dados muito úteis fornecidas nas linguagens de programação. No entanto, elas têm pelo menos duas limitações: 1- Seu tamanho tem que ser conhecido
Leia maisIntrodução a Programação de Jogos
Introdução a Programação de Jogos Aula 03 Introdução a Linguagem C Edirlei Soares de Lima Estrutura de um Programa C Inclusão de bibliotecas auxiliares: #include Definição
Leia mais08/08/2011. Pilha. SCC0202 Algoritmos e Estruturas de Dados I. Prof. Thiago A. S. Pardo. Pilha. O que é? Para que serve?
Pilha SCC0202 Algoritmos e Estruturas de Dados I Prof. Thiago A. S. Pardo Pilha O que é? Para que serve? 2 1 Rotina A 1 print A 2 call C 3 call B 4 call D Rotina B 1 call C 2 print B 3 call D 4 call C
Leia maisCES-11. Algoritmos e Estruturas de Dados. Carlos Alberto Alonso Sanches Juliana de Melo Bezerra
CES-11 Algoritmos e Estruturas de Dados Carlos Alberto Alonso Sanches Juliana de Melo Bezerra CES-11 Revisão Tipos escalares primitivos Tipos constituídos de uma linguagem Ponteiros Alocação estática versus
Leia maisALGORITMOS E ESTRUTURAS DE DADOS CES-11
ALGORITMOS E ESTRUTURAS DE DADOS CES-11 Prof. Paulo André Castro pauloac@ita.br Sala 110 Prédio da Computação www.comp.ita.br/~pauloac IECE - ITA Revisão CES-11 Tipos escalares primitivos Tipos constituídos
Leia maisINF 1620 P4 11/12/06 Questão 1 Nome:
INF 1620 P4 11/12/06 Questão 1 Considere que o cálculo da multa para o pagamento de um determinado imposto varia de acordo com a tabela a seguir: Valor do Imposto Original Multa por mês de atraso até R$
Leia maisComputadores Digitais 2. Prof. Rodrigo de Souza Couto
Computadores Digitais 2 Linguagens de Programação DEL-Poli/UFRJ Prof. Miguel Campista Aula de Hoje Tipos Estruturados Tipo estrutura Definição de novos tipos Aninhamento de Estruturas Vetores de estruturas
Leia maisEstruturas da linguagem C. 1. Identificadores, tipos primitivos, variáveis e constantes, operadores e expressões.
1 Estruturas da linguagem C 1. Identificadores, tipos primitivos, variáveis e constantes, operadores e expressões. Identificadores Os identificadores seguem a duas regras: 1. Devem ser começados por letras
Leia maisEstruturas de Dados Aula 11: TAD Pilha 09/05/2011
Estruturas de Dados Aula 11: TAD Pilha 09/05/2011 Fontes Bibliográficas Livros: Projeto de Algoritmos (Nivio Ziviani): Capítulo 3; Introdução a Estruturas de Dados (Celes, Cerqueira e Rangel): Capítulo
Leia maisA regra de acesso aos dados de uma fila é a seguinte: O primeiro elemento que entra (na fila) é o primeiro que sai (FIFO first in, first out).
Fila Algumas aplicações impõem regras de acesso às informações armazenados em estruturas de dados, restringindo como os dados são inseridos e removidos da estrutura. A fila, também conhecida como QUEUE,
Leia maisEscreva em Java a classe NumeroComplexo que represente um número complexo. A classe deverá ter os seguintes construtores:
Lista 2 1 - Números Complexos Números complexos são os que são escritos da forma: a + b*i onde a é a parte real e b a parte imaginária. Escreva em Java a classe NumeroComplexo que represente um número
Leia maisEstruturas de Dados Aula 12: Outras Implementações de Listas 18/04/2011
Estruturas de Dados Aula 12: Outras Implementações de Listas 18/04/2011 Fontes Bibliográficas Waldemar Celes, Renato Cerqueira, José Lucas Rangel, Introdução a Estruturas de Dados, Editora Campus (2004)
Leia maisINF 1007 Programação II
INF 1007 Programação II Aula 14 Árvores Binárias Edirlei Soares de Lima Árvores Uma estrutura de dados do tipo árvore permite que dados sejam organizados de maneira hierárquica.
Leia maisEstruturas de dados. IPC2 1999/2000 F. Nunes Ferreira
Estruturas de dados IPC2 1999/2000 F. Nunes Ferreira Acetatos baseados no livro C: How to Program (second edition) H. M. Deitel P. J. Deitel Prentice Hall, 1994 Estruturas de dados Introdução 2 Arrays
Leia maisa) Implemente uma função que retorne uma aproximação do valor de π, de acordo com a F órmula de Leibniz: ( 1)
INF 620 P - 7/04/04 Questão a) Implemente uma função que retorne uma aproximação do valor de π, de acordo com a F órmula de Leibniz: Ou seja: π 4 * + 3 π 5 7 + 9 i ( ) 4 * n i= 0 2 * i + + K Esta função
Leia maisFontes Bibliográficas. Listas Circulares. Função Imprime
Fontes Bibliográficas Estruturas de Dados Aula 12: Outras Implementações de Listas Waldemar Celes, Renato Cerqueira, José Lucas Rangel, Introdução a Estruturas de Dados, Editora Campus (2004) Capítulo
Leia maisINF 1007 Programação II
INF 1007 Programação II Aula 05 Recursividade Edirlei Soares de Lima Introdução As seguintes sentenças são Verdadeiras ou Falsas? 1. Alguém diz: Estou mentido agora! ; 2. Alguém
Leia maisMétodos Computacionais. Listas Encadeadas
Métodos Computacionais Listas Encadeadas Vetores Declaração de vetor implica na especificação de seu tamanho Não se pode aumentar ou diminuir tamanho Outra alternativa no uso de vetores é alocar dinamicamente
Leia maisAula 5 e 6 Pilhas e suas Aplicações. prof Leticia Winkler
Aula 5 e 6 Pilhas e suas Aplicações prof Leticia Winkler 1 Definição de Pilha (Stack) São estruturas de dados do tipo LIFO (last-in first-out) - o último elemento a ser inserido, será o primeiro a ser
Leia maisEstruturas de Dados Aula 10: Listas (parte 2) 19/04/2011
Estruturas de Dados Aula 10: Listas (parte 2) 19/04/2011 Fontes Bibliográficas Livros: Projeto de Algoritmos (Nivio Ziviani): Capítulo 3; Introdução a Estruturas de Dados (Celes, Cerqueira e Rangel): Capítulo
Leia maisESTRUTURA DE DADOS (TCC )
ESTRUTURA DE DADOS (TCC-00.319) Listas lineares Pilhas e Filas Cristina Boeres 2 Manipulando listas lineares! Dependendo do problema a ser resolvidos, existem duas formas especiais (que veremos aqui no
Leia maisProgramação 1. Atribuição, operadores aritméticos, entrada de dados. Técnico em Eletrônica Semestre 5 02
Programação 1 Atribuição, operadores aritméticos, entrada de dados Técnico em Eletrônica Semestre 5 02 Armazenando na memória tipo de variável #include #include main() { int ano; Declaração
Leia maisPilha. SCC Algoritmos e Estruturas de Dados I. Prof. Fernando V. Paulovich. *Baseado no material do Prof. Gustavo Batista
Pilha SCC0202 - Algoritmos e Estruturas de Dados I Prof. Fernando V. Paulovich *Baseado no material do Prof. Gustavo Batista http://www.icmc.usp.br/~paulovic paulovic@icmc.usp.br Instituto de Ciências
Leia maisComputação para Informática - Prof. Adriano Joaquim de Oliveira Cruz Segunda Aula Prática - 3 de setembro de 2010
Computação para Informática - Prof. Adriano Joaquim de Oliveira Cruz Segunda Aula Prática - 3 de setembro de 2010 1 Introdução O objetivo desta aula prática é exercitar o uso de variáveis de vários tipos
Leia maisCaracteres e Cadeias de Caracteres
Caracteres e Cadeias de Caracteres INF1005 Programação I Prof. Hélio Lopes lopes@inf.puc-rio.br sala 408 RDC 1 caracteres e cadeias de caracteres tópicos caracteres cadeias de caracteres (strings) vetor
Leia maisÁrvores. Prof. César Melo DCC/ICE/UFAM
Árvores Prof. César Melo DCC/ICE/UFAM Introdução As estruturas anteriores são chamadas de unidimensionais (ou lineares) Exemplo são vetores e listas Não podem ser usadas como hierarquias. Exemplo: árvore
Leia maisParadigmas de Programação. Java First-Tier: Aplicações. Orientação a Objetos em Java (I) Nomenclatura. Paradigma OO. Nomenclatura
Java First-Tier: Aplicações Orientação a Objetos em Java (I) Paradigmas de Programação Programação Funcional Programação Procedural Programação Orientada por Objetos Grupo de Linguagens de Programação
Leia maisAlocação de Memória. Lucas Ferrari de Oliveira Professor Adjunto Universidade Federal do Paraná (UFPR)
Alocação de Memória Linguagem de Programação Estruturada 1 Alocação dinâmica e ponteiros Lucas Ferrari de Oliveira Professor Adjunto Universidade Federal do Paraná (UFPR) Sumario Introdução Alocação Estática
Leia maisINF P4-12/12/09 Questão 1 Nome:
INF 1007 - P4-12/12/09 Questão 1 QUESTÃO OBRIGATÓRIA [Valor: 2,5 pontos] Escreva um programa completo em C que leia do teclado um caractere e uma cadeia de caracteres e escreva quantas vezes aquele caractere
Leia maisIntrodução a Computação
Introdução a Computação Aula 03 Introdução a Linguagem C Edirlei Soares de Lima Programação Programa é um algoritmo escrito em uma linguagem de programação. Existem diversas linguagens
Leia maisComputação para Informática - Prof. Adriano Joaquim de Oliveira Cruz Segunda Aula Prática - 29 de agosto de 2008
Computação para Informática - Prof. Adriano Joaquim de Oliveira Cruz Segunda Aula Prática - 29 de agosto de 2008 Introdução O objetivo desta aula prática é exercitar comandos de entrada e saída simples
Leia maisCapítulo 1: Introdução à Linguagem C. Pontifícia Universidade Católica Departamento de Informática
Capítulo 1: Introdução à Linguagem C Pontifícia Universidade Católica Departamento de Informática Programa Programa é um algoritmo escrito em uma linguagem de programação. No nosso caso, a linguagem C.
Leia maisÁrvores. Prof. César Melo DCC/ICE/UFAM
Árvores Prof. César Melo DCC/ICE/UFAM Introdução As estruturas anteriores são chamadas de unidimensionais (ou lineares) Exemplo são vetores e listas Não adequadas para representar hierarquias. Exemplo:
Leia maisFilas Exemplo de Aplicação
Filas Exemplo de Aplicação Uma aplicação interessante para filas é a ordenação por distribuição, descrita a seguir. Seja uma lista l composta de n chaves, cada qual representada por um inteiro numa base
Leia maisMétodos Computacionais. Tipos Estruturados
Métodos Computacionais Tipos Estruturados Tipos Estruturados C oferece tipos primitivos que servem para representar valores simples Reais (float, double), inteiros (int), caracter (char) C oferece também
Leia maisFontes Bibliográficas. Estruturas de Dados Aula 15: Árvores. Livros:
Fontes Bibliográficas Estruturas de Dados Aula 15: Árvores Livros: Introdução a Estruturas de Dados (Celes, Cerqueira e Rangel): Capítulo 13; Projeto de Algoritmos (Nivio Ziviani): Capítulo 5; Estruturas
Leia maisConceitos básicos. Computação eletrônica: Gurvan Huiban
Computação eletrônica: Conceitos básicos Gurvan Huiban ghuiban@cin.ufpe.br Plano de aula 1 Estrutura de um programa em C 2 Variáveis e constantes 3 Comandos de entrada e saída Estrutura de um programa
Leia mais