Estruturas de dados elementares

Tamanho: px
Começar a partir da página:

Download "Estruturas de dados elementares"

Transcrição

1 AED 2002/2003 p.1/31 Estruturas de dados elementares Tipos básicos Estruturas Tabelas Listas Amontoados

2 AED 2002/2003 p.2/31 Tipos básicos Inteiros Reais Caracteres Ponteiros short a1; int a2; long a3; float x1; double x2; char c1; int *p1;

3 Tipos compostos Estruturas struct point float x; float y; ; Uniões struct line_point int type; union struct point float x,y; struct line float x1,y1; float x2,y2; ; AED 2002/2003 p.3/31

4 AED 2002/2003 p.4/31 Tabelas Colecção de items Inteiros, reais, caracteres Estruturas ou uniões Tabelas, Ponteiros Guardados em posições consecutivas de memória int tab[n]; n 1 Programador é responsável por respeitar limites

5 AED 2002/2003 p.5/31 Tabelas Em C, tabelas podem ser: De dimensão fixa Alocadas dinamicamente #define N 100 int tab1[n]; int *tab2 = malloc(n*sizeof(int)); Acesso a tabelas alternativo Com ponteiros Usando aritmética de ponteiros x = tab2[i]; y = *(tab2+i);

6 AED 2002/2003 p.6/31 Exemplo: crivo de Eratóstenes #define N 1000 main() int i,j,a[n]; for (i=2;i<n;i++) a[i] = 1; for (i=2;i<n;i++) if (a[i]) for(j=i; i*j<n; j++) a[i*j] = 0; for (i=2; i<n; i++) if (a[i]) printf("%4d",i); printf("\n");

7 AED 2002/2003 p.7/31 Exemplo: simulação de moedas ao ar #include <stdlib.h> int heads() return rand() < RAND_MAX/2; main(int argc, char *argv[]) int i, j, cnt; int N = atoi(argv[1]), M = atoi(argv[2]); int *f = malloc((n+1)*sizeof(int)); for (j = 0; j <= N; j++) f[j] = 0; for (i = 0; i < M; i++, f[cnt]++) for (cnt = 0, j = 0; j <= N; j++) if (heads()) cnt++; for (j = 0; j <= N; j++) printf("%2d ", j); for (i = 0; i < f[j]; i+=10) printf("*"); printf("\n");

8 AED 2002/2003 p.8/31 Listas simplesmente ligadas Conjunto de nós Cada nó contém Informação útil Ponteiro para outro nó typedef struct node *link; struct node Item item; link next;;

9 AED 2002/2003 p.9/31 Apagamento em listas x t = x >next; t x x >next = t >next; t

10 AED 2002/2003 p.10/31 Inserção em listas x t x t >next = x >next; t x x >next = t;

11 AED 2002/2003 p.11/31 Inversão de lista link reverse(link x) link t, y = x, r = NULL; while (y!= NULL) t = y->next; y->next = r; r = y; y = t; return r;

12 AED 2002/2003 p.12/31 Insertion sort Versão 1 static int *vect; void init() int i; vect = (int*) malloc(n*sizeof(int)); for (i=0; i<n; i++) vect[i] = rand() % M; void print() int i; printf("[ "); for (i=0; i<n; i++) printf("%d ", vect[i]); printf("]\n");

13 AED 2002/2003 p.13/31 Insertion sort Versão 1 void isort() /* Utiliza tabela */ int i, j; for (i=1; i<n; i++) int key = vect[i]; j = i-1; while (j>=0 && vect[j] > key) vect[j+1] = vect[j]; j--; vect[j+1] = key;

14 AED 2002/2003 p.14/31 Insertion sort Versão 2 typedef int Item; typedef struct node *link; struct node Item item; link next; ; static struct node *head; void init() int i; link pt, pv; head = NULL; for (i = 0; i < N; i++) pt = malloc(sizeof *pt); pt->next = NULL; pt->item = rand() % M; if (!head) head = pt; else pv->next = pt; pv = pt;

15 AED 2002/2003 p.15/31 Insertion sort Versão 2 void isort() /* Utiliza lista */ link pa, pb, px, py, pz; for (px = head->next, py = head; px!= NULL; px = pz) py->next = px->next; pz = px->next; for (pb=head, pa=pb; pb!=pz; pa=pb, pb=pb->next) if (pb->item > px->item) break; if (pa == pb) head = px; else pa->next = px; px->next = pb; if (pb == pz) py = px;

16 AED 2002/2003 p.16/31 Insertion sort Versão 3 typedef int Item; typedef struct node *link; struct node Item item; link next; ; static struct node *heada, *headb; void init() int i; link t, u, a; heada = (link) malloc(sizeof(*heada)); headb = (link) malloc(sizeof(*headb)); a = heada; for (i = 0, t = a; i < N; i++) t->next = malloc(sizeof *t); t = t->next; t->next = NULL; t->item = rand() % M;

17 AED 2002/2003 p.17/31 Insertion sort Versão 3 void isort() /* Utiliza lista com sentinela */ link t, u, x, b; b = headb; b->next = NULL; for (t = heada->next; t!= NULL; t = u) u = t->next; for (x = b; x->next!= NULL; x = x->next) if (x->next->item > t->item) break; t->next = x->next; x->next = t; heada->next = headb->next; headb->next = NULL;

18 AED 2002/2003 p.18/31 Lista Duplamente Ligada struct iitem int value; struct iitem *next; struct iitem *prev; ; typedef struct iitem IntItem; typedef IntItem* IntItemPtr; static IntItemPtr first = NULL; static IntItemPtr last = NULL; static IntItemPtr alloc_item() return (IntItemPtr) malloc(sizeof(intitem));

19 AED 2002/2003 p.19/31 Lista Duplamente Ligada void init() first = alloc_item(); last = alloc_item(); first->next = last; first->prev = NULL; last->next = NULL; last->prev = first;

20 AED 2002/2003 p.20/31 Lista Duplamente Ligada int insert(int value) IntItemPtr px, nitem; for (px = first->next; px!= last && px->value < value; px = px->next) ; if (px!= last && px->value == value) return 0; /* no duplicates */ nitem = alloc_item(); nitem->value = value; px->prev->next = nitem; nitem->prev = px->prev; nitem->next = px; px->prev = nitem; return 1;

21 AED 2002/2003 p.21/31 Lista Duplamente Ligada int delete(int value) IntItemPtr px; for (px = first->next; px!= last && px->value < value; px = px->next) ; if (px && px->value == value) px->prev->next = px->next; px->next->prev = px->prev; free(px); return 1; return 0;

22 AED 2002/2003 p.22/31 Lista Duplamente Ligada void delete_list() IntItemPtr px; while (px = first) first = first->next; free(px); first = last = NULL; void print_list() IntItemPtr px; printf("[ "); for (px = first->next; px!= last; px = px->next) printf("%d ", px->value); printf("]\n");

23 AED 2002/2003 p.23/31 Interface para processamento de listas #include <stdlib.h> #include "list.h" link freelist; void initnodes(int N) int i; freelist = malloc((n+1)*(sizeof *freelist)); for (i = 0; i < N+1; i++) freelist[i].next = &freelist[i+1]; freelist[n].next = NULL; link newnode(int i) link x = deletenext(freelist); x->item = i; x->next = x; return x;

24 AED 2002/2003 p.24/31 Interface para processamento de listas void freenode(link x) insertnext(freelist, x); void insertnext(link x, link t) t->next = x->next; x->next = t; link deletenext(link x) link t = x->next; x->next = t->next; return t; link Next(link x) return x->next; int Item(link x) return x->item;

25 Amontoados Uma árvore está heap-ordered se a chave de cada nó for maior ou igual às chaves dos seus filhos X T O G S M N A E R A I Nenhum nó tem uma chave superior à raiz Uma árvore binária é completa se apenas o último nível estiver incompleto, e faltarem apenas os nós mais à direita. AED 2002/2003 p.25/31

26 AED 2002/2003 p.26/31 Amontoados X T O G S M N A E R A I X T O G S M N A E R A I Parente do nó é o nó Filhos do nó são os nós e

27 AED 2002/2003 p.27/31 Operações em amontoados: fixup Chamada quando a prioridade de um nó é aumentada Nó tem de ser deslocado para cima fixup(item a[], int k) while (k > 1 && less(a[k/2], a[k])) exch(a[k], a[k/2]); k = k/2;

28 AED 2002/2003 p.28/31 Operações em amontoados: fixdown Chamada quando a prioridade de um nó é diminuída Nó tem de ser deslocado para baixo, até ao último nível ou até que a prioridade do nó alterado seja maior que ambos os filhos fixdown(item a[], int k, int N) int j; while (2*k <= N) j = 2*k; if (j < N && less(a[j], a[j+1])) j++; if (!less(a[k], a[j])) break; exch(a[k], a[j]); k = j;

29 AED 2002/2003 p.29/31 Fila de prioridades #include <stdlib.h> #include "Item.h" static Item *pq; static int N; void PQinit(int maxn) pq = malloc((maxn+1)*sizeof(item)); N = 0; int PQempty() return N == 0; void PQinsert(Item v) pq[++n] = v; fixup(pq, N); Item PQdelmax() exch(pq[1], pq[n]); fixdown(pq, 1, N-1); return pq[n--];

30 AED 2002/2003 p.30/31 Ordenação com fila de prioridades void PQsort(Item a[], int l, int r) int k; PQinit(r-l+1); for (k = l; k <= r; k++) PQinsert(a[k]); for (k = r; k >= l; k--) a[k] = PQdelmax();

31 AED 2002/2003 p.31/31 Heapsort #define pq(a) a[l-1+a] void heapsort(item a[], int l, int r) int k, N = r-l+1; for (k = N/2; k >= 1; k--) fixdown(&pq(0), k, N); while (N > 1) exch(pq(1), pq(n)); fixdown(&pq(0), 1, --N);

Filas de prioridade e heapsort

Filas de prioridade e heapsort 1 Filas de prioridade e heapsort Além do Sedgewick (sempre leiam o Sedgewick), veja http://www.ime.usp.br/~pf/algoritmos/aulas/hpsrt.html 2 Filas de prioridade e heapsort Fila de prioridade: fila na qual

Leia mais

Listas ligadas/listas encadeadas

Listas ligadas/listas encadeadas 1 Listas ligadas/listas encadeadas Leitura recomendada: http://www.ime.usp.br/~pf/algoritmos/aulas/lista.html 2 Processamento elementar de listas Definição mais restritiva (tipo de lista possivelmente

Leia mais

Algoritmos e Estruturas de Dados

Algoritmos e Estruturas de Dados Introdução aos Algoritmos e Estruturas de Dados 2 o Teste - A LEIC Alameda, 2007/2008 Data: 12 de Junho de 2008 2 o Semestre Duração: 2h RESOLUÇÃO I. (2.5+2.5 = 5.0 val.) I.a) Suponha que está a trabalhar

Leia mais

INSTITUTO SUPERIOR TÉCNICO Algoritmos e Estruturas de Dados

INSTITUTO SUPERIOR TÉCNICO Algoritmos e Estruturas de Dados INSTITUTO SUPERIOR TÉCNICO Algoritmos e Estruturas de Dados Ano Lectivo de 2004/2005 2 o Semestre RESOLUÇÃO DO 2 o TESTE A I. (2.0+1.5+1.5 = 5.0 val.) a) Qual das seguintes declarações pode ser usada para

Leia mais

Tipos abstratos de dados; pilhas e filas

Tipos abstratos de dados; pilhas e filas 1 Tipos abstratos de dados; pilhas e filas Além do Sedgewick (sempre leiam o Sedgewick), veja http://www.ime.usp.br/~pf/algoritmos/aulas/pilha.html http://www.ime.usp.br/~pf/algoritmos/aulas/fila.html

Leia mais

INSTITUTO SUPERIOR TÉCNICO Introdução aos Algoritmos e Estruturas de Dados

INSTITUTO SUPERIOR TÉCNICO Introdução aos Algoritmos e Estruturas de Dados INSTITUTO SUPERIOR TÉCNICO Introdução aos Algoritmos e Estruturas de Dados Ano Lectivo de 2006/2007 2 o Semestre 2 o Teste A - 2 de Julho de 2007 Duração: 2h - O teste é sem consulta. - Para cada questão

Leia mais

Algoritmos e Estruturas de Dados

Algoritmos e Estruturas de Dados Introdução aos Algoritmos e Estruturas de Dados Repescagem 2 o Teste - B Ano lectivo: 2010/2011 2 o Semestre RESOLUÇÃO DA REPESCAGEM DO 2 o TESTE I. (2.5 + 2.5 + 3.0 = 8.0 val.) I.a) Considere o tipo Voo

Leia mais

Ponteiros e Tabelas. K&R: Capítulo 5

Ponteiros e Tabelas. K&R: Capítulo 5 Ponteiros e Tabelas K&R: Capítulo 5 Ponteiros e Tabelas Ponteiros e endereços Ponteiros e argumentos de funções Ponteiros e tabelas Alocação dinâmica de memória Aritmética de ponteiros Tabelas de ponteiros

Leia mais

Carlos Eduardo Batista. Centro de Informática - UFPB

Carlos Eduardo Batista. Centro de Informática - UFPB Estrutura de Dados Carlos Eduardo Batista Centro de Informática - UFPB [email protected] Aritmética de ponteiros em C (continuação) O que acontece na memória? Ponteiro para ponteiro etc. Métodos de pesquisa

Leia mais

Listas Ligadas (Encadeadas) Listas Simplesmente Encadeadas

Listas 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 mais

Métodos Computacionais. Tipos Estruturados

Mé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 mais

Programação II. Listas Encadeadas (Linked Lists) Bruno Feijó Dept. de Informática, PUC-Rio

Programação II. Listas Encadeadas (Linked Lists) Bruno Feijó Dept. de Informática, PUC-Rio Programação II Listas Encadeadas (Linked Lists) Bruno Feijó Dept. de Informática, PUC-Rio Vetores vs Estruturas Dinâmicas Vetores (arrays): Ocupa um espaço contíguo de memória Permite acesso randômico

Leia mais

Departamento 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 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 mais

Algoritmos e Estruturas de dados

Algoritmos e Estruturas de dados Algoritmos e Estruturas de dados Listas Encadeadas Prof. Dr. Fábio Rodrigues de la Rocha (Listas Encadeadas) 1 / 21 Definição: Anteriormente estudamos listas encadeadas que foram implementadas como vetores

Leia mais

Programação Estruturada I

Programação Estruturada I Programação Estruturada I Introdução a Linguagem C Prof. Thiago Caproni Tavares 1 Prof. Mateus dos Santos 2 1 [email protected] 2 [email protected] Última Atualização:

Leia mais

A 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).

A 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 mais

Alocação Dinâmica de Memória

Alocação Dinâmica de Memória Alocação Dinâmica de Memória Luiz Chaimowicz, Raquel O. Prates, Pedro O.S. Vaz de Melo Algoritmos e Estruturas de Dados II DCC UFMG Alocação Estática x Dinâmica C: dois tipos de alocação de memória: Estática

Leia mais

Algoritmos e Estruturas de Dados: Lista Duplamente Encadeada

Algoritmos e Estruturas de Dados: Lista Duplamente Encadeada Lista Duplamente Encadeada Interface 1/13 dlist_init void dlist_init(dlist *list, void (*destroy)(void *data)); Algoritmos e Estruturas de Dados: Lista Duplamente Encadeada Rômulo Silva de Oliveira Departamento

Leia mais

UNIVERSIDADE DA BEIRA INTERIOR

UNIVERSIDADE DA BEIRA INTERIOR UNIVERSIDADE DA BEIRA INTERIOR Algoritmos e Estruturas de Dados - Bioengenharia 2º Semestre Exame Especial Resolução 19/07/2013 A. [4.75 val] Algoritmos de ordenação e de pesquisa (usando memória estática

Leia mais

Filas com prioridade - Introdução (1)

Filas com prioridade - Introdução (1) AED Algoritmos e Estruturas de Dados LEEC - 2004/2005 Filas com Prioridade Filas com prioridade - Introdução (1) Filas com prioridade (Priority Queues) usadas em diversas aplicações: Despacho (scheduler)

Leia mais

Linguagens de Programação I

Linguagens de Programação I Linguagens de Programação I Tema # 4 Operadores em C Susana M Iglesias FUNÇÕES ENTRADA-SAÍDA I/O printf(), utilizada para enviar dados ao dispositivo de saída padrão (stdout), scanf(), utilizada para ler

Leia mais

1 Exercícios com ponteiros

1 Exercícios com ponteiros Computação para Informática Funções e Ponteiros1 EXERCÍCIOS COM PONTEIROS Computação para Informática - Prof. Adriano Joaquim de Oliveira Cruz Aula Prática - Funções e ponteiros O objetivo desta aula prática

Leia mais

Bruno Hott Algoritmos e Estruturas de Dados I DECSI UFOP. Alocação Dinâmica de Memória

Bruno Hott Algoritmos e Estruturas de Dados I DECSI UFOP. Alocação Dinâmica de Memória Bruno Hott Algoritmos e Estruturas de Dados I DECSI UFOP Alocação Dinâmica de Memória Alocação Estática x Dinâmica C: dois tipos de alocação de memória: Estática e Dinâmica Na alocação estática, o espaço

Leia mais

Anhanguera Educacional S.A. Centro Universitário Ibero-Americano

Anhanguera Educacional S.A. Centro Universitário Ibero-Americano O C++ foi inicialmente desenvolvido por Bjarne Stroustrup durante a década de 1980 com o objetivo de melhorar a linguagem de programação C, mantendo a compatibilidade com esta linguagem. Exemplos de Aplicações

Leia mais

Programaçã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 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 mais

Algoritmos e Estruturas de Dados

Algoritmos e Estruturas de Dados Introdução aos Algoritmos e Estruturas de Dados 2 o Teste - A Ano lectivo: 2010/2011 2 o Semestre RESOLUÇÃO DO 2 o TESTE Grupo I (2.0 + 2.5 + 2.0 = 6.5 val.) I.a) Considere os tipos enum ocasiao e Presente

Leia mais

Computação para Informática - Prof. Adriano Joaquim de Oliveira Cruz Segunda Prova - 23a de junho de 2008

Computação para Informática - Prof. Adriano Joaquim de Oliveira Cruz Segunda Prova - 23a de junho de 2008 Computação para Informática - Prof. Adriano Joaquim de Oliveira Cruz Segunda Prova - 23a de junho de 2008 Nome: Assinatura: 1 a Questão: (2.0 pontos) Números Aleatórios Escreva um programa que gere N números

Leia mais

Estruturas (Registros)

Estruturas (Registros) Estruturas (Registros) Agrupa conjunto de tipos de dados distintos sob um único nome string string inteiro inteiro inteiro float float Cadastro Pessoal Nome Endereço Telefone Idade Data de Nascimento Peso

Leia mais

GABARITO EXERCÍCIOS ÁRVORES arv.h struct noarv { int info; struct noarv * esq; struct noarv * dir; }; typedef struct noarv NoArv;

GABARITO EXERCÍCIOS ÁRVORES arv.h struct noarv { int info; struct noarv * esq; struct noarv * dir; }; typedef struct noarv NoArv; GABARITO EXERCÍCIOS ÁRVORES arv.h struct noarv int info; struct noarv * esq; struct noarv * dir; ; typedef struct noarv NoArv; NoArv * arv_cria(int v, NoArv * e, NoArv * d); NoArv * arv_insere(noarv *

Leia mais

Ponteiros - Parte I. Ponteiros, Ponteiros e Vetores, Algoritmo Bubble Sort, Alocação Dinâmica de Memória

Ponteiros - Parte I. Ponteiros, Ponteiros e Vetores, Algoritmo Bubble Sort, Alocação Dinâmica de Memória Ponteiros - Parte I Ponteiros, Ponteiros e Vetores, Algoritmo Bubble Sort, Alocação Dinâmica de Memória Ponteiros Um ponteiro é uma variável que contém um endereço de memória. Esse endereço é normalmente

Leia mais

Listas Lineares. continuando...

Listas Lineares. continuando... Listas Lineares continuando... 1 Listas! relembrando: listas lineares agrupa informações referentes aum conjunto de elementos que, de alguma forma, se relacionam entre si! Uma lista linear ou está vazia,

Leia mais

INF 1620 P2-01/11/03 Questão 1 Nome:

INF 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 mais

Programação de Computadores I Introdução ao C PROFESSORA CINTIA CAETANO

Programação de Computadores I Introdução ao C PROFESSORA CINTIA CAETANO Programação de Computadores I Introdução ao C PROFESSORA CINTIA CAETANO Introdução Criada em 1972, por Dennis Ritchie; Centro de Pesquisas da Bell Laboratories; Para utilização no S.O. UNIX; C é uma linguagem

Leia mais

Algoritmos Eficientes de Ordenação

Algoritmos Eficientes de Ordenação AED 2002/2003 p.1/22 Algoritmos Eficientes de Ordenação Quick Sort Merge Sort Heap Sort Utilizar informação das chaves: Counting Sort Radix Sort AED 2002/2003 p.2/22 Quick Sort int partition(item a[],

Leia mais

Computação 2. Aula Profª. Fabiany Listas Duplamente Encadeadas

Computação 2. Aula Profª. Fabiany Listas Duplamente Encadeadas Computação 2 Aula 10.1 Listas Duplamente Encadeadas Profª. Fabiany [email protected] ListaEncadeada.h #ifndef _LISTAENCADEADA_H_ #define _LISTAENCADEADA_H_ #include #include #include

Leia mais

AED 2002/2003 p.1/16. Tabelas de Dispersão. Funçoes de dispersão Encadeamento externo Procura linear Double hashing Eficiência da procura

AED 2002/2003 p.1/16. Tabelas de Dispersão. Funçoes de dispersão Encadeamento externo Procura linear Double hashing Eficiência da procura AED 2002/2003 p.1/16 Tabelas de Dispersão Funçoes de dispersão Encadeamento externo Procura linear Double hashing Eficiência da procura AED 2002/2003 p.2/16 Funções de dispersão Deve distribuir as chaves

Leia mais

Melhores momentos AULA 14

Melhores momentos AULA 14 Melhores momentos AULA Problema O algoritmo de Dijkstra resolve o problema da SPT: Dado um vértice s de um digrafo com custos não-negativos nos arcos, encontrar uma SPT com raiz s 5 5 5 Simulação 5 Simulação

Leia mais

LISTAS ENCADEADAS OU NÃO- SEQÜENCIAIS. Estrutura de Dados

LISTAS ENCADEADAS OU NÃO- SEQÜENCIAIS. Estrutura de Dados LISTAS ENCADEADAS OU NÃO- SEQÜENCIAIS Listas Lineares Como visto anteriormente, as operações básicas para o nosso TAD Lista Linear são: FLVazia Vazia Retira Insere Imprime A implementação através de arrays

Leia mais

Hello World. Linguagem C. Tipos de Dados. Palavras Reservadas. Operadores Aritméticos. Pré e pós incremento e pré e pós decremento

Hello World. Linguagem C. Tipos de Dados. Palavras Reservadas. Operadores Aritméticos. Pré e pós incremento e pré e pós decremento Hello World Linguagem C printf("hello world!\n"); main é a função principal, a execução do programa começa por ela printf é uma função usada para enviar dados para o vídeo Palavras Reservadas auto double

Leia mais

O que é um apontador em C (type pointer in C)?

O que é um apontador em C (type pointer in C)? O que é um apontador em C (type pointer in C)? Um apontador é uma variável que contém um endereço de outra variável. int x = 10;//variável inteira iniciada com o valor 10 int *px = &x;//variável apontadora

Leia mais

Estruturas 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 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 mais

Estrutura de dados 2. Ponteiro. Prof. Jesuliana N. Ulysses

Estrutura 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 mais

AED Algoritmos e Estruturas de Dados LEEC /2006. Algoritmos de Ordenação 1ª parte

AED Algoritmos e Estruturas de Dados LEEC /2006. Algoritmos de Ordenação 1ª parte AED Algoritmos e Estruturas de Dados LEEC - 2005/2006 Algoritmos de Ordenação 1ª parte Porquê estudar algoritmos elementares Razões de ordem prática (de ordenação) Fáceis de codificar e por vezes suficientes

Leia mais

HeapSort. Estrutura de Dados II Jairo Francisco de Souza

HeapSort. Estrutura de Dados II Jairo Francisco de Souza HeapSort Estrutura de Dados II Jairo Francisco de Souza HeapSort Algoritmo criado por John Williams (1964) Complexidade O(NlogN) no pior e médio caso Mesmo tendo a mesma complexidade no caso médio que

Leia mais

Atividade de laboratório listas encadeadas simples

Atividade 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 mais

Listas (Parte 2) Túlio Toffolo [email protected] www.toffolo.com.br. BCC202 Aula 10 Algoritmos e Estruturas de Dados I

Listas (Parte 2) Túlio Toffolo tulio@toffolo.com.br www.toffolo.com.br. BCC202 Aula 10 Algoritmos e Estruturas de Dados I Listas (Parte 2) Túlio Toffolo [email protected] www.toffolo.com.br BCC202 Aula 10 Algoritmos e Estruturas de Dados I Listas Encadeadas Características: Tamanho da lista não é pré-definido Cada elemento

Leia mais

ALGORITMOS E ESTRUTURAS DE DADOS CES-11

ALGORITMOS E ESTRUTURAS DE DADOS CES-11 ALGORITMOS E ESTRUTURAS DE DADOS CES-11 Prof. Paulo André Castro [email protected] 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 mais

3. Linguagem de Programação C

3. 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 mais

Aula T13 BCC202 Árvores. Túlio Toffolo

Aula T13 BCC202 Árvores. Túlio Toffolo Aula T13 BCC202 Árvores Túlio Toffolo www.decom.ufop.br/toffolo Conceitos básicos n Organiza um conjunto de acordo com uma estrutura hierárquica. n Contém elementos que são chamados de nós n O pai de todos

Leia mais

Linguagem C: Ponteiros - Alocação Dinâmica

Linguagem C: Ponteiros - Alocação Dinâmica Prof. Paulo R. S. L. Coelho [email protected] Faculdade de Computação Universidade Federal de Uberlândia GEQ007 Organização 1 Ponteiros Alocação Dinâmica de Memória 2 3 4 Organização Ponteiros Alocação

Leia mais