1/36 LISTAS. Programação II
|
|
- Sophia Lencastre Quintão
- 5 Há anos
- Visualizações:
Transcrição
1 1/36 LISTAS
2 Estrutura de Dados 2/36 Estrutura de Dados Definição - Uma Estrutura de Dados é: - uma coleção de tipos de dados, composta por tipos não estruturados básicos, tipos estruturados ou uma mistura de ambos, - um conjunto de operações definidas sobre os tipos de dados. - Por outras palavras, uma estrutura de dados é composta por 3 partes: - um conjunto de operações; - uma estrutura de armazenamento especificando as classes de dados relacionados e as coleções de variáveis; - um conjunto de algoritmos, uma para cada operação. Cada algoritmo procura e modifica a estrutura de armazenamento para alcançar o resultado definido pela operação.
3 Estrutura de Dados 3/36 Exemplo - um conjunto de variáveis inteiras e - o conjunto de operações aritméticas simples (adição, subtração, multiplicação, divisão, negação, valor absoluto, etc.) sobre elas. Classificação - Existem 2 classes de estrutura de dados, as quais estão relacionadas com o tipo do armazenamento requerido: - Estática (fixa): estrutura cujo tamanho e atribuição de memória associadas são fixadas aquando da compilação do programa; - Dinâmica: estrutura cujo tamanho aumenta ou diminui consoante as necessidades durante a execução do programa (em que a localização da memória a si associada poderá ser alterada).
4 Estrutura de Dados 4/36 Exemplos mais comuns -, - Pilhas, - Filas, e - Árvores.
5 A estrutura de Dados Lista 5/36 A estrutura de Dados Lista Definição É uma sequência linear de tipos de dados do mesmo tipo Tem as seguintes propriedades - Existe um primeiro elemento (a cabeça) com um único sucessor (o próximo); - Existe um último elemento (a cauda) sem sucessor; - Qualquer outro elemento tem um sucessor e um antecessor;
6 A estrutura de Dados Lista 6/36 Sobre uma lista realizam-se as seguintes operações - Criar um elemento - Criar uma lista - Verificar se uma lista está vazia (não tem elementos) - Pesquisar um elemento numa lista - Remover/eliminar um elemento de uma lista - Inserir um elemento numa lista (no início, no fim e numa lista ordenada) - Atualizar um elemento de uma lista - Ordenar uma lista - Imprimir/listar uma lista - Determinar a quantidade de elementos de uma lista (tamanho/comprimento) - Eliminar/destruir uma lista
7 A estrutura de Dados Lista 7/36 Os elementos numa lista - estão sempre ligados pela sua relação sucessor-antecessor. Uma ED Lista pode ser implementada - num espaço de armazenamento sequencial ou - num espaço de armazenamento não sequencial. Implementação num espaço de armazenamento sequencial - podem-se usar vetores, os quais podem ser declarados usando - memória estática ou - memória dinâmica. Implementação num espaço de armazenamento não sequencial - podem-se usar ponteiros e memória dinâmica.
8 Armazenamento Sequencial 8/36 Armazenamento Sequencial Todos os dados na estrutura são mantidos num vetor Os vetores podem ser definidos de duas formas - usando memória estática, em que o tamanho é fixado quando o programa é escrito, não podendo ser alterado enquanto o programa está a ser executado, ou - usando memória dinâmica, em que o tamanho é alterado à medida que o programa vai sendo executado, consoante as necessidades de espaço de armazenamento.
9 Armazenamento Sequencial 9/36 No caso de se usar memória estática - Quando se está a escrever um programa, - tem que se decidir qual o tamanho máximo (de memória) que será necessário para os vetores, e - estabelecer este limite nas declarações. - Problemas: - Se o programa for executado com um pequeno conjunto de dados, então muito deste espaço nunca vai ser utilizado (desperdício de memória). - Se o programa for executado com um grande conjunto de dados, então pode-se esgotar o espaço estabelecido na declaração e encontrar uma situação de overflow. Isto pode ocorrer mesmo no caso da memória do computador não estar totalmente usada, devido ao tamanho máximo do vetor ser muito baixo.
10 Armazenamento Sequencial 10/36 No caso de se usar memória dinâmica - Apenas é necessário declarar um apontador/ponteiro para uma variável do mesmo tipo dos elementos da lista. - A lista vai crescendo em tamanho à medida das necessidades de inserção de elementos na lista. - Problema: - possibilidade de inexistência de um bloco de memória contígua necessário para receber todos os elementos da lista. - Este problema pode ser ultrapassado usando outra forma de manter as estruturas de dados na memória (sem vetores), como é o caso de listas ligadas.
11 Armazenamento Sequencial 11/36 A definição de um elemento da Lista é composta pelos campos - Dados; - Chave (opcional) - campo pelo qual a lista está ordenada; - Localização (índice) na lista. Numa lista L - o elemento de índice 0 (L 0 ) com sucessor (L 1 ) e sem antecessor; - o elemento de índice N-1 (L N-1 ) com antecessor (L N-2 ) e sem sucessor; - o elemento da lista com índice k (L k ) tem: - o elemento de índice k-1 como seu antecessor (L k-1 ), - o elemento de índice k+1 como seu sucessor (L k+1 ).
12 Armazenamento sequencial com memória estática 12/36 Armazenamento sequencial com memória estática Exemplo #define TamMax 100 int Lista[TamMax], N = 50;
13 Armazenamento sequencial com memória estática 13/36 Exemplo #define TamMax 100 int Lista[TamMax], N = 50; N = 100;
14 Armazenamento sequencial com memória estática 14/36 Exemplo #define TamMax 100 int Lista[TamMax], N = 50; N = 100; N = 102; ERRO (overflow): N > TamMax (102 > 100)
15 Armazenamento sequencial com memória estática 15/36 Tamanho máximo - Constante (= TamMax) Þ Ineficiência Acesso - Direto Tamanho efetivo - Necessário atualizar e testar eventual transbordo (> TamMax) Reordenamento - Trocas (ou vetor auxiliar) Inserção/Remoção de elementos - Deslocamento de todos os elementos seguintes
16 Armazenamento sequencial com memória dinâmica 16/36 Armazenamento sequencial com memória dinâmica Exemplo int *Lista, N = 50; Lista = (int *) malloc(n * sizeof(int));
17 Armazenamento sequencial com memória dinâmica 17/36 Exemplo int *Lista, N = 50; Lista = (int *) malloc(n * sizeof(int)); N = 100; Lista = (int *) realloc(lista, N * sizeof(int));
18 Armazenamento sequencial com memória dinâmica 18/36 Exemplo int *Lista, N = 50; Lista = (int *) malloc(n * sizeof(int)); N = 100; Lista = (int *) realloc(lista, N * sizeof(int)); N = 102; Lista = (int *) realloc(lista, N * sizeof(int));
19 Armazenamento sequencial com memória dinâmica 19/36 Tamanho máximo - Variável Þ Eficiência Tamanho efetivo - Necessário atualizar para alocar memória dinâmica; - Testar disponibilidade de memória antes de aumentar o tamanho. Acesso - Direto Reordenamento - Trocas (ou vetor auxiliar) Inserção/Remoção de elementos - Deslocamento de todos os elementos seguintes
20 Armazenamento sequencial com memória dinâmica 20/36 Declaração - Os elementos de uma lista podem ser definidos como - um tipo qualquer simples (por exemplo: inteiro, real ou carácter) ou - estruturado (por exemplo: registo). - Uma lista pode ser definida como um vetor ( array ). - Portanto, antes de se definir uma lista tem que se definir os elementos da lista.
21 Armazenamento sequencial com memória dinâmica 21/36 Declaração (exemplo) typedef struct { char Nome[50]; int Idade, BI; char Sexo[1]; // Masculino(M/m) ou Feminino(F/f) } ELEMENTO; ELEMENTO *Lista; int N; Cada um dos elementos consiste no seguinte - Dados, é a informação associada a cada elemento (Nome, Idade, BI e Sexo) - Chave, é o campo que servirá de base para ordenar a lista (por ex: Nome) - N, é o número de elementos (tamanho) da Lista - Localização, é o índice que lhe está associado (entre 0 e N-1).
22 Armazenamento sequencial com memória dinâmica 22/36 Criar um elemento - Quando se pretende inserir um novo elemento numa lista, este deve ser criado antes; isto é, atribuir valores a todos os campos da estrutura que suporta a informação associada a cada elemento da lista. - Um possível algoritmo para criar um elemento é o seguinte: Dados de entrada: -- Dados de saída: retorna o endereço de um elemento E (criado e preenchido com a informação desejada localmente, usando alocação de memória) Algoritmo: Para cada campo do elemento E fazer Pedir informação Introduzir informação
23 Armazenamento sequencial com memória dinâmica 23/36 Criar um elemento - Uma possível função que traduz o algoritmo é a seguinte: ELEMENTO *CriarElemento () { ELEMENTO *E; E = (ELEMENTO *) malloc(sizeof(elemento)); } if (E == NULL) return NULL; printf( Insira o nome : \n ); gets(e->nome); printf( Insira a idade : \n ); scanf( %d, &(E->Idade)); printf( Insira o BI : \n ); scanf( %d, &(E->BI)); printf( Insira o sexo (M/m; F/f) : \n ); gets(e->sexo); return E;
24 Armazenamento sequencial com memória dinâmica 24/36 Criar uma lista - Quando se pretende criar uma lista, isto deve ser realizado com a introdução de um elemento (que será o primeiro). - Um possível algoritmo para criar uma lista é o seguinte: Dados de entrada: -- Dados de saída: a lista L com um só elemento e o seu tamanho (que é 1) Algoritmo: Criar um novo elemento Inserir o novo elemento na posição 1 (índice 0) da lista L (L[0]) Atualizar o tamanho da lista, atribuindo o valor 1 a N
25 Armazenamento sequencial com memória dinâmica 25/36 Criar uma lista - Uma possível função que traduz o algoritmo é a seguinte: ELEMENTO *CriarLista (int *N) { ELEMENTO *L, *E; E = CriarElemento(); L = (ELEMENTO *) malloc(sizeof(elemento)); if (L == NULL) return NULL; L[0] = *E; *N = 1; free(e); return L; }
26 Armazenamento sequencial com memória dinâmica 26/36 Inserir um elemento numa lista - Na resolução deste problema tem de ser analisadas três situações distintas, consoante a forma como se pretende inserir o elemento: - no início, - no fim ou - com a lista ordenada.
27 Armazenamento sequencial com memória dinâmica 27/36 Inserir no início - Começa-se por avançar uma posição a todos os elementos da lista, para que a 1ª posição fique livre para receber o novo elemento. - Um possível algoritmo é o seguinte: Dados de entrada: o elemento X, a lista L e o tamanho da lista (N) Dados de saída: a lista L e o seu tamanho (N) atualizados Algoritmo: Realocar memória para mais um elemento Avançar uma posição todos os elementos da lista L Inserir X na posição 1 (índice 0) Atualizar o tamanho da lista, incrementando um valor a N
28 Armazenamento sequencial com memória dinâmica 28/36 Inserir no início - Uma possível função que traduz o algoritmo é a seguinte: ELEMENTO *InserirInicio (ELEMENTO X, ELEMENTO L[], int *N) { int k; L = (ELEMENTO *) realloc(l, (*N+1) * sizeof(elemento)); if (L == NULL) } return NULL; // impossível alocar memória para um novo elemento for (k = *N; k > 0; k--) L[k] = L[k-1]; // avançar todos os elementos da lista uma posição L[0] = X; // colocar o elemento X na 1ª posição (índice 0) *N = *N + 1; // atualizar o tamanho da lista, incrementando um valor return L; // operação com êxito novo elemento inserido
29 Armazenamento sequencial com memória dinâmica 29/36 Inserir no fim - Neste caso, apenas é necessário introduzir o novo elemento na última posição da lista (nova posição). - Um possível algoritmo é o seguinte: Dados de entrada: o elemento X, a lista L e o tamanho da lista (N) Dados de saída: a lista L e o seu tamanho (N) atualizados Algoritmo: Realocar memória para mais um elemento Inserir X na posição N+1 (uma posição à frente do último elemento da lista) Atualizar o tamanho da lista, incrementando-o num valor
30 Armazenamento sequencial com memória dinâmica 30/36 Inserir no fim - Uma possível função que traduz o algoritmo é a seguinte: ELEMENTO *InserirFim (ELEMENTO X, ELEMENTO L[], int *N) { L = (ELEMENTO *) realloc(l, (*N+1) * sizeof(elemento)); if (L == NULL) } return NULL; // impossível alocar memória para um elemento L[*N] = X; // colocar o elemento X na última posição (*N-1) *N = *N + 1; // atualizar o tamanho da lista, incrementando um valor return L; // operação com êxito novo elemento inserido
31 Armazenamento sequencial com memória dinâmica 31/36 Inserir por ordem - É o caso mais utilizado. Começa por pesquisar a posição pos onde inserir o novo elemento; depois, todos os elementos que se posicionem depois de pos avançam uma posição, ficando a posição pos livre para receber o novo valor. - Um possível algoritmo é o seguinte: Dados de entrada: o elemento X, a lista L e o tamanho da lista (N) Dados de saída: a lista L e o seu tamanho atualizados Algoritmo: (lista ordenada crescentemente pelo campo BI) Determinar a posição k onde inserir o elemento X Avançar uma posição todos os elementos da lista L que estão depois da posição k Inserir X na posição k Atualizar o tamanho da lista, incrementando-o num valor
32 Armazenamento sequencial com memória dinâmica 32/36 Inserir por ordem - Uma possível função que traduz o algoritmo é a seguinte: ELEMENTO *InserirOrdem (ELEMENTO X, ELEMENTO L[], int *N) { int k, pos = 0; L = (ELEMENTO *) realloc(l, (*N+1) * sizeof(elemento)); if (L == NULL) } return NULL; // não há memória para inserir o novo elemento while ((pos < *N) && (L[pos].BI < X.BI)) // lista ordenada pelo campo BI pos = pos + 1; // o elemento X deve ser inserido na posição pos for (k = *N; k > pos; k--) L[k] = L[k-1]; // avançar uma posição os elementos da lista após pos L[pos] = X; // colocar o elemento X na posição pos *N = *N + 1; // atualizar o tamanho da lista, incrementando um valor return L; // novo elemento inserido
33 Armazenamento sequencial com memória dinâmica 33/36 Remover um elemento de uma lista - Consiste em eliminar um dado elemento de uma lista ordenada ou não. - A diferença, em termos algorítmicos, entre estas duas situações encontra-se na forma de pesquisar a posição do elemento a remover. Basta aplicar um dos métodos existentes que mais se adequar à lista (ordenada ou não ordenada). - Um possível algoritmo é o seguinte: Dados de entrada: o elemento X, uma lista L e o tamanho da lista (N) Dados de saída: a lista L e o seu tamanho (N) atualizados Algoritmo: k posição do elemento X na lista L (utilizar um dos métodos de pesquisa) Recuar uma posição todos os elementos que estão depois do elemento da posição k Atualizar o tamanho da lista, decrementando N em um valor Atualizar lista, removendo o último elemento realocando memória
34 Armazenamento sequencial com memória dinâmica 34/36 Remover um elemento de uma lista - Uma possível função que traduz o algoritmo é a seguinte: ELEMENTO *Remover (ELEMENTO X, ELEMENTO L[], int *N) { int k, pos, *aux; } pos = PesquisaExaustiva(X, L, *N); // lista ordenada ou não if (pos >= 0) { // o elemento a remover, X, pertence à lista for (k = pos; k < *N-1; k++) L[k] = L[k+1]; *N = *N 1; // atualizar o tamanho da lista, decrementando um valor L = (ELEMENTO *) realloc(l, (*N) * sizeof(elemento)); //atualizar L } return L;
35 Armazenamento sequencial com memória dinâmica 35/36 Remover um elemento de uma lista (outra forma) - Consiste em fornecer a posição do elemento a remover - O processo consiste, então, no seguinte: - verificar se o elemento a remover se encontra na lista - pesquisar a posição do elemento a remover, usando um dos métodos para o efeito; - remover o elemento da lista, caso exista. Um possível algoritmo é o que se segue. Dados de entrada: a posição (pos) do elemento, a lista L e o seu tamanho (N) Dados de saída: a lista L e o seu tamanho (N) atualizados Algoritmo: Recuar uma posição todos os elementos que se encontram em posição após pos Atualizar o tamanho da lista, decrementando N em um valor Atualizar lista, removendo o último elemento realocando memória
36 Armazenamento sequencial com memória dinâmica 36/36 Remover um elemento de uma lista (outra forma) - Uma possível função que traduz o algoritmo é a seguinte: ELEMENTO *Remover (int pos, ELEMENTO L[], int *N) { int k; for (k = pos; k < *N-1; k++) } L[k] = L[k+1]; // recuar uma posição os elementos desde k *N = *N 1; // atualizar o tamanho da lista (decrementar um valor a N) L = (ELEMENTO *) realloc(l, (*N) * sizeof(elemento)); // atualizar lista return L;
Índice. Capítulo 2 Estrutura de Dados sequencial com armazenamento sequencial
Índice i Índice Capítulo 2 Estrutura de Dados sequencial com armazenamento sequencial 1. A Estrutura Abstrata de Dados Lista... 1 1.1. Definição... 1 1.2. Implementação de Listas utilizando armazenamento
Leia maisESTRUTURA DE DADOS (TCC )
ESTRUTURA DE DADOS (TCC-00.319) Listas lineares Cristina Boeres 2 Estrutura de Dados! Listas lineares! estática! dinâmicas! Como manipulá-las:! pilhas! filas Listas Lineares 3! fácil manipulação! agrupa
Leia maisUniversidade Federal de Uberlândia Faculdade de Computação. Linguagem C: ponteiros e alocação dinâmica
Universidade Federal de Uberlândia Faculdade de Computação Linguagem C: ponteiros e alocação dinâmica Prof. Renato Pimentel 1 Ponteiros 2 Prof. Renato Pimentel 1 Ponteiros: introdução Toda a informação
Leia maisProgramação: Vetores
Programação de Computadores I Aula 09 Programação: Vetores José Romildo Malaquias Departamento de Computação Universidade Federal de Ouro Preto 2011-1 1/62 Motivação Problema Faça um programa que leia
Leia maisUNIVERSIDADE DA BEIRA INTERIOR
UNIVERSIDADE DA BEIRA INTERIOR Algoritmos e Estruturas de Dados - Bioengenharia 2º Semestre Exame Época Normal Resolução 13/junho/2015 A. [3.5 val] Algoritmos de ordenação e de pesquisa Considere-se as
Leia maisPONTEIROS E LISTAS. Kalinka Regina Lucas Jaquie Castelo Branco
PONTEIROS E LISTAS Kalinka Regina Lucas Jaquie Castelo Branco kalinka@icmc.usp.br ALOCAÇÃO DINÂMICA DE MEMÓRIA Pode-se assumir que as variáveis declaradas na cláusula variável do pseudo-código do algoritmo
Leia maisCES-11. Algoritmos e Estruturas de Dados. Carlos Alberto Alonso Sanches Juliana de Melo Bezerra
CES- Algoritmos e Estruturas de Dados Carlos Alberto Alonso Sanches Juliana de Melo Bezerra Árvores CES- Operações sobre uma árvore Estruturas para armazenar árvores Contígua Contígua melhorada Encadeada
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 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 maisEstrutura de Dados Listas
Universidade Federal da Paraíba Centro de Informática Departamento de Informática Estrutura de Dados Listas 1 Tiago Maritan tiago@ci.ufpb.br Conteúdos Abordados O Conceito de Listas Listas com Representação
Leia maisUNIVERSIDADE DA BEIRA INTERIOR
UNIVERSIDADE DA BEIRA INTERIOR Programação II 2º Semestre Exame Época Norma (15 val) Resolução 22/06/2018 1 [1,00 val + 1,00 val] - Memória Dinâmica Considere as seguintes declarações de variáveis: int
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. Prof. Marcelo Zorzan Profa. Melissa Zanatta
Algoritmos e Estruturas de Dados Prof. Marcelo Zorzan Profa. Melissa Zanatta Assuntos da Aula Alocação de Memória Alocação estática de memória Alocação dinâmica de memória Malloc, Calloc, Free, Realloc
Leia maisAlgoritmos 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 maisLista com saltos - generalidades
Lista com saltos - generalidades - Foram propostas em 1989 por William Pugh, professor da Universidade de Maryland; - Permitem operações de consulta, inserção e remoção mais eficientes do que as listas
Leia maisUNIVERSIDADE DA BEIRA INTERIOR
UNIVERSIDADE DA BEIRA INTERIOR Algoritmos e Estruturas de Dados - Bioengenharia 2º Semestre Frequência Resolução 19/maio/2015 A. [3.5 val] Algoritmos de ordenação e de pesquisa Considere-se as seguintes
Leia maisLISTAS - ARMAZENAMENTO NÃO SEQUENCIAL COM MEMÓRIA DINÂMICA
LISTAS - ARMAZENAMENTO NÃO SEQUENCIAL COM MEMÓRIA DINÂMICA int *Lista; Lista 9 14 18... 976 982 Tamanho Máximo: - Variável Acesso: - Sequencial Tamanho atual: - Percorrer a lista até ao fim e contar os
Leia maisEstrutura de Dados. Carlos Eduardo Batista. Centro de Informática - UFPB
Estrutura de Dados Carlos Eduardo Batista Centro de Informática - UFPB bidu@ci.ufpb.br Listas e Filas Estruturas de Dados 2 Estrututuras de dados lineares Pilhas (stack) Estrutura de dados onde a inserção
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 maisUNIVERSIDADE DA BEIRA INTERIOR
UNIVERSIDADE DA BEIRA INTERIOR Programação II 1º Semestre Frequência 2 Resolução 07/01/2019 1. [1,25 val] - Análise de Complexidade dos Algoritmos Considere o seguinte bloco de código em linguagem C: for
Leia maisLISTAS LINEARES. Estrutura de Dados
LISTAS LINEARES Lista Linear Definição: seqüência de zero ou mais elementos a 1,a 2,...,a n sendo a i elementos de um mesmo tipo n o tamanho da lista linear Propriedade fundamental: os elementos têm relações
Leia maisPonteiros. Baseado nos slides do Prof. Mauro.
Baseado nos slides do Prof. Mauro. A memória do computador é uma sequência de bytes, na qual endereçamos cada um sequencialmente. Como vimos, uma variável é uma região da memória que reservamos para armazenar
Leia maisEstruturas de Dados Aulas 3 e 4: Uso da memória e Vetores
Estruturas de Dados Aulas 3 e 4: Uso da memória e Vetores Uso da memória Existem 3 maneiras de reservar o espaço da memória: Variáveis globais (estáticas) Espaço existe enquanto programa estiver executando
Leia maisEAD PILHA - DEFINIÇÃO
EAD PILHA - DEFINIÇÃO Os seus elementos são processados pela ordem inversa à ordem de chegada: - o último elemento a entrar na Pilha é o primeiro a sair (LIFO Last In First Out ). Qualquer operação que
Leia maisEdital de Seleção 024/2017 PROPESP/UFAM. Prova de Conhecimento. Caderno de Questões
Edital de Seleção 024/2017 PROPESP/UFAM Prova de Conhecimento Caderno de Questões CANDIDATO: «Nome» INSCRIÇÃO: «Inscrição» Assinatura conforme identidade INSTRUÇÕES PARA O CANDIDATO: Verifique o seu nome
Leia maisIntrodução a Programação. Ponteiros e Vetores, Alocação Dinâmica
Introdução a Programação Ponteiros e Vetores, Alocação Dinâmica Tópicos da Aula Hoje aprenderemos que existe uma forte relação entre ponteiros e vetores Associação entre ponteiros e vetores Ponteiros constantes
Leia maisEstruturas de Dados I
Estruturas de Dados I Rodrigo Porfírio da Silva Sacchi rodrigosacchi@ufgd.edu.br 3410-2075 Aula 6: Listas Encadeadas e Alocação Dinâmica Listas Encadeadas e Alocação Dinâmica Alocação Seqüencial versus
Leia maisEstruturas de Dados Aulas 3 e 4: Uso da. 14/03/2011 e 16/03/2011
Estruturas de Dados Aulas 3 e 4: Uso da memória e Vetores 14/03/2011 e 16/03/2011 Uso da memória Existem 3 maneiras de reservar o espaço da memória: Variáveis globais (estáticas) Espaço existe enquanto
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 maisEstruturas de Dados Estruturas de Dados Fundamentais
Estruturas de Dados Estruturas de Dados Fundamentais Prof. Eduardo Alchieri Estruturas de Dados Fundamentais Todos os tipos abstratos de dados (pilhas, filas, deques, etc.) podem ser implementados usando
Leia maisMatrizes Esparsas. atribuição (M, i, j, v) (i, j) IND. v nulo. v não nulo v nulo v não nulo. há espaço. não há espaço. retira substitui nada
Matrizes Esparsas atribuição (M, i, j, v) (i, j) IND (i, j) IND v nulo v não nulo v nulo v não nulo retira substitui nada há espaço não há espaço insere erro! estouro da representação 83 Matrizes Esparsas
Leia maisEstrutura de Dados. ! Listas lineares. ! Como manipulá-las: ! estática. ! dinâmicas. ! pilhas. ! filas
Estrutura de Dados! Listas lineares! estática! dinâmicas! Como manipulá-las:! pilhas! filas 1 Listas Lineares! fácil manipulação! agrupa informações referentes a um conjunto de elementos que se relacionam
Leia maisÁrvores. SCC-202 Algoritmos e Estruturas de Dados I. Lucas Antiqueira
Árvores SCC-202 Algoritmos e Estruturas de Dados I Lucas Antiqueira Listas e árvores Listas lineares Um nó após o outro, adjacentes Nó sucessor e antecessor Diversas aplicações necessitam de estruturas
Leia maisVariáveis, Tipos de Dados e Operadores
! Variáveis, Tipos de Dados e Operadores Engenharias Informática Aplicada 2.o sem/2013 Profa Suely (e-mail: smaoki@yahoo.com) VARIÁVEL VARIÁVEL É um local lógico, ligado a um endereço físico da memória
Leia maisExercício. Alocação Dinâmica. Alocação dinâmica de memória. Alocação de memória. Alocação da Memória Principal. Alocação da Memória Principal
Exercício Crie uma função que recebe o número de dias até um determinado evento e calcula e retorna o equivalente em meses, semanas e dias, sem usar vetor ou o conceito de vetor. Considerar que todos os
Leia mais1/34 GESTÃO DINÂMICA DE MEMÓRIA
1/34 GESTÃO DINÂMICA DE MEMÓRIA Memória Estática 2/34 Memória Estática Exemplo #include main() { int V[300], N; do{ printf ( N =? ); scanf ( %d, &N); while ((N < 0) (N > 300); for (i = 0; i
Leia maisAlgoritmos e Estruturas de Dados II IEC013
Algoritmos e Estruturas de Dados II IEC013 Revisão: Listas Encadeadas Prof. César Melo Todos os créditos reservados ao professor Leandro Galvão Listas Encadeadas Listas encadeadas ou listas ligadas representam
Leia maisFilas Implementação Sequencial
SCE 202 182 Algoritmos e Estruturas de Dados I Filas Implementação Sequencial Conceito Coleção ordenada de itens (lista ordenada) em que a inserção de um novo item se dá em um dos lados no fim e a remoção
Leia maisEstrutura de Dados: Lista Linear. Parte I Introdução e Listas Sequenciais Estáticas
Estrutura de Dados: Lista Linear Parte I Introdução e Listas Sequenciais Estáticas Estrutura de dados: Lista Linear Def. Uma Lista Linear é uma coleção ordenada de componentes de um mesmo tipo. Ela é ou
Leia maisLista: conceito, representação e algoritmos
Lista: conceito, representação e algoritmos SCC0202 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 maisÁRVORE B. Vanessa Braganholo Estruturas de Dados e Seus Algoritmos
ÁRVORE B Vanessa Braganholo Estruturas de Dados e Seus Algoritmos INTRODUÇÃO 2 ARQUIVOS DE ACESSO DIRETO Basicamente, duas formas de acesso a um registro: Acesso via cálculo do endereço do registro (hashing)
Leia maisEstrutura de Dados: Lista Linear. Parte I Introdução e Listas Sequenciais Estáticas
Estrutura de Dados: Lista Linear Parte I Introdução e Listas Sequenciais Estáticas Estrutura de dados: Lista Linear Def. Uma Lista Linear é uma coleção ordenada de componentes de um mesmo tipo. Ela é ou
Leia maisEstrutura de Dados. Aula 07 Alocação Dinâmica
Estrutura de Dados Aula 07 Alocação Dinâmica 2 ALOCAÇÃO DINÂMICA Existem três modos de reservar espaço de memória para o armazenamento de informações: 1ª - através do uso de variáveis globais (e estáticas).
Leia maisIntrodução a Programação. Listas Encadeadas
Introdução a Programação Listas Encadeadas Tópicos da Aula Hoje aprenderemos que existem, além de vetores, estruturas de dados dinâmicas que podem armazenar coleções de dados Estruturas Dinâmicas e Vetores
Leia maisLinguagem C Ponteiros
Linguagem C Ponteiros Instituto Federal de Educação, Ciência e Tecnologia do Triângulo Mineiro Prof. Edwar Saliba Júnior Janeiro de 2018 Unidade 14 Linguagem C - Ponteiros 1/24 Identificadores e Endereços
Leia maisAlgoritmos e Estrutura de Dados. Aula 05 Estrutura de Dados: Listas (Parte II) Prof. Tiago A. E. Ferreira
Algoritmos e Estrutura de Dados Aula 05 Estrutura de Dados: Listas (Parte II) Prof. Tiago A. E. Ferreira Listas Seqüenciais Estática Seqüencial É implementada usando um vetor Deve-se determinar qual a
Leia maisAlgoritmos e Estrutura de Dados II. Árvore. Prof a Karina Oliveira.
Algoritmos e Estrutura de Dados II Árvore Prof a Karina Oliveira kkco@dei.unicap.br Introdução Estruturas de dados lineares (pilha, fila) são estruturas que guardam coleções de elementos que são acessados
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 maisÍndice. Capítulo 1 - Introdução
Índice i Índice Capítulo 1 - Introdução 1. Estruturas na linguagem C... 1 1.1. A necessidade de utilizar Estruturas... 1 1.2. Definição de estrutura... 1 1.3. Como aceder aos campos de uma estrutura...
Leia maisEAD ARVORE BINÁRIA - ARMAZENAMENTO NÃO SEQUENCIAL COM VETORES
EAD ARVORE BINÁRIA - ARMAZENAMENTO NÃO SEQUENCIAL COM VETORES Árvores Binárias de Pesquisa (ABP) - Definição Árvore binária em que os elementos dos seus nodos têm associado uma chave, que - determina a
Leia maisTipos de Dados Dinâmicos
Tipos de Dados Dinâmicos Manipular uma lista de nomes de alunos: como? Tipo de dados Registo com: nome notas de trabalhos assiduidade nota final Representação para a Lista???? MP II, 2006/2007 p.1/20 Hipótese
Leia maisProgramaçã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 maisCES-11. Algoritmos e Estruturas de Dados. Árvores Operações sobre uma árvore Estruturas para armazenar árvores
ES- Algoritmos e Estruturas de ados ES- ontígua ontígua melhorada arlos Alberto Alonso Sanches uliana de Melo Bezerra ES- ontígua ontígua melhorada Operações sobre uma árvore é o tipo correspondente a
Leia maisASSOCIAÇÃO PARAIBANA DE ENSINO RENOVADO FACULDADE PARAIBANA DE PROCESSAMENTO DE DADOS ESTRUTURA DE DADOS
ASSOCIAÇÃO PARAIBANA DE ENSINO RENOVADO FACULDADE PARAIBANA DE PROCESSAMENTO DE DADOS ESTRUTURA DE DADOS INTRODUÇÃO O que é uma Estrutura de Dados (ED)?? Tipos de Dados? Estruturas de Dados e? Tipos Abstratos
Leia mais13. ALOCAÇÃO DINÂMICA DE MEMÓRIA
787878787878787878787878787878787878787878787878787878 13. ALOCAÇÃO DINÂMICA DE MEMÓRIA Sempre é necessário declarar o número de elementos do array. Mas e se ele for desconhecido? E se ele variar? Pode
Leia maisListas Estáticas. SCC Algoritmos e Estruturas de Dados I. Prof. Fernando V. Paulovich. *Baseado no material do Prof.
Listas Estáticas 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
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 maisCarlos Eduardo Batista. Centro de Informática - UFPB
Estrutura de Dados Carlos Eduardo Batista Centro de Informática - UFPB bidu@ci.ufpb.br Aritmética de ponteiros em C (continuação) O que acontece na memória? Ponteiro para ponteiro etc. Métodos de pesquisa
Leia maisFilas. Prof. Túlio Toffolo BCC202 Aula 12 Algoritmos e Estruturas de Dados I
Filas Prof. Túlio Toffolo http://www.toffolo.com.br BCC202 Aula 12 Algoritmos e Estruturas de Dados I O que é uma fila? 1 4 2 3 Fila 1 2 3 4 TAD Fila Tipo Abstrato de dados com a seguinte característica:
Leia maisAlgoritmos e Estruturas de Dados I
Algoritmos e Estruturas de Dados I Aula 09 Revisão + Simulado Prof. Jesús P. Mena-Chalco jesus.mena@ufabc.edu.br 1Q-2019 1 Vetores 2 Vetores 3 Vetores vetor 4 Vetores... vetor... 5 Ponteiros 6 Processo
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 maisCriando seu próprio tipo de dado. Prof. Fabrício Olivetti de França
Criando seu próprio tipo de dado Prof. Fabrício Olivetti de França Fração Vamos criar uma biblioteca de funções para trabalhar com frações. Uma fração é composta por numerador e denominador. Fração int
Leia maisUNIVERSIDADE 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 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 maisEstrutura de Dados e Algoritmos e Programação e Computadores II. Aula 4: Listas Estáticas e Dinâmicas
Estrutura de Dados e Algoritmos e Programação e Computadores II Aula 4: Listas Estáticas e Dinâmicas Listas Estáticas: com Vetores Dinâmicas: Listas Ligadas (com ponteiros) Variáveis e Métodos de Controle:
Leia maisLista: conceito, representação e algoritmos
Alocação seqüencial vs. encadeada Lista: conceito, representação e algoritmos Alocação seqüencial: elementos são alocados em seqüência; seqüência física Baseado no material de Thiago A. S. Pardo Algoritmos
Leia maisA linguagem C permite dois tipos de alocação de memória: Alocação estática e alocação dinâmica.
Alocação de Memória Todo programa precisa utilizar memória para ser executado. Quando um programa inicia sua execução, ele começa a solicitar memória ao sistema operacional, ou seja, faz a alocação de
Leia maisAULA 12 ESTRUTURA DE DADOS
AULA 12 ESTRUTURA DE DADOS Fila (implementação dinâmica) Norton T. Roman & Luciano A. Digiampietri Fila É uma estrutura linear na qual: - As inserções ocorrem no final da fila; - As exclusões ocorrem no
Leia maisÁRVORES BINÁRIAS DE BUSCA. Vanessa Braganholo Estruturas de Dados e Seus Algoritmos
ÁRVORES BINÁRIAS DE BUSCA Vanessa Braganholo Estruturas de Dados e Seus Algoritmos REFERÊNCIA Szwarcfiter, J.; Markezon, L. Estruturas de Dados e seus Algoritmos, 3a. ed. LTC. Cap. 4 INSTITUTO DE COMPUTAÇÃO
Leia maisPonteiros & tabelas (cont.) K&R: Capítulo 5
Ponteiros & tabelas (cont.) K&R: Capítulo 5 Sinopse da aula de hoje Pointers in a nutshell & alocação dinâmica de memória Estruturas, funções e apontadores Estruturas auto-referenciadas Exemplo de aplicação:
Leia maisAlocação Dinâmica em C
Alocação Dinâmica em C Anderson L. S. Moreira anderson.moreira@recife.ifpe.edu.br http://dase.ifpe.edu.br/~alsm 1 O que fazer com essa apresentação 2 Introdução A alocação dinâmica de memória é uma característica
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 maisListas. Aula 01. DPEE 1038 Estrutura de Dados para Automação Curso de Engenharia de Controle e Automação Universidade Federal de Santa Maria
Engenharia de CONTROLE e AUTOMAÇÃO Listas Aula 01 DPEE 1038 Estrutura de Dados para Automação Curso de Engenharia de Controle e Automação Universidade Federal de Santa Maria beltrame@mail.ufsm.br 1/ Sumário
Leia maisLista Encadeada (Linked List)
Lista Encadeada (Linked List) As listas ou listas encadeadas são a estrutura de dados mais simples concebível excetuando-se naturalmente os arrays. Listas encadeadas nada mais são que uma seqüência de
Leia maisEAD ARVORE BINÁRIA - ARMAZENAMENTO NÃO SEQUENCIAL COM VETORES
EAD ARVORE BINÁRIA - ARMAZENAMENTO NÃO SEQUENCIAL COM VETORES Estrutura de dados: - Arvore é um vetor em que cada componente (nodo) é composto por 3 campos: - Elemento (informação a tratar), que pode ser
Leia maisProfessora Jeane Melo
Professora Jeane Melo Roteiro Lista Encadeada Alocação: Estática x Dinâmica O que são Ponteiros? Ponteiros Variáveis que Armazenam Endereços de Memória Mas, toda variável não é armazenada na memória? Ponteiros
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 maisUNIVERSIDADE DA BEIRA INTERIOR
UNIVERSIDADE DA BEIRA INTERIOR Programação e Algoritmos / Programação II 2º Semestre Exame - 1ª chamada Resolução 20/06/2013 1. [2.0 val] Apontadores (Responder esta questão nesta folha e entregar com
Leia maisCopiar para o ficheiro ArvoreBinaria.h e adaptar as funções associadas às operações sobre árvores binárias (3.1 a 3.12)
Considere as seguintes declarações (NodoArv e PNodoArv), adaptadas dos apontamentos: struct NodoArv { int Elemento; struct NodoArv *Esquerda; struct NodoArv *Direita; ; typedef struct NodoArv *PNodoArv;
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 mais- o primeiro elemento a entrar na fila é o primeiro a sair (FIFO First In First Out ).
EAD FILA - DEFINIÇÃO Os seus elementos são processados por ordem de chegada: - o primeiro elemento a entrar na fila é o primeiro a sair (FIFO First In First Out ). Algumas operações realizam-se na cabeça
Leia maisESTRUTURA DE DADOS E ALGORITMOS. Árvores Binárias de Busca. Cristina Boeres
ESTRUTURA DE DADOS E ALGORITMOS Árvores Binárias de Busca Cristina Boeres Árvore Binária de Busca 30! construída de tal forma que, para cada nó: nós com chaves menores estão na sub-árvore esquerda nós
Leia maisBCC202 - Estrutura de Dados I
BCC202 - Estrutura de Dados I Aula 08: Listas (Parte 1) ASN Universidade Federal de Ouro Preto, UFOP Departamento de Computação, DECOM Material elaborado com base nos slides do Prof. Reinaldo Fortes (curso
Leia mais11a. Aula Ponteiros e Vetores
11a. Aula Ponteiros e Vetores 2013.2 2 É um tipo de variável com uma ressalva...... armazena apenasendereçode memória (ou null) Se eu tiver o endereço da casa de Francisca, eu poderei visitá-la e lhe fazer
Leia maisProgramação Estruturada Prof. Rodrigo Hausen Organização e Gerenciamento de Memória
Programação Estruturada Prof. Rodrigo Hausen http://progest.compscinet.org Organização e Gerenciamento de Memória 1 AULA PASSADA - vetores ou arrays Declaração de um vetor (array) em C: tipo nome[tamanho];
Leia maisProgramação I Ponteiros e alocação dinâmica de memória. Prof. Carlos Alberto
Programação I Ponteiros e alocação dinâmica de memória Prof. Carlos Alberto carlos.batista@facape.br carlos36_batista@yahoo.com.br Ponteiros O ponteiro é um tipo de dado como int, char ou float; Variáveis
Leia maisPonteiros em C. Adriano Joaquim de Oliveira Cruz 21 de julho de Instituto de Matemática Departamento de Ciência da Computação UFRJ
Ponteiros em C Adriano Joaquim de Oliveira Cruz 21 de julho de 2017 Instituto de Matemática Departamento de Ciência da Computação UFRJ 1 Resumo da Seção Introdução Declaração Incrementando e Decrementando
Leia maisAlgoritmos e Programação
Algoritmos e Programação Aula 7 Vetores Profa. Marina Gomes marinagomes@unipampa.edu.br 19/05/2017 Engenharia de Computação - Unipampa 1 Motivação Problema: Leia as notas de uma turma de cinco estudantes
Leia maisAlgoritmos e Estruturas de Dados Prof. Osório PIP/CA - Aula 05 Pag.: 1
Algoritmos e Estruturas de Dados Prof. Osório PIP/CA - Aula 05 Pag.: 1 - UNIVERSIDADE DO VALE DO RIO DOS SINOS CENTRO DE CIÊNCIAS EXATAS E TECNOLÓGICAS (C6/6) PIP/CA - Programa Interdisciplinar de Pós-Graduação
Leia maisListas (Parte 1) Túlio Toffolo BCC202 Aula 09 Algoritmos e Estruturas de Dados I
Listas (Parte 1) Túlio Toffolo tulio@toffolo.com.br www.toffolo.com.br BCC202 Aula 09 Algoritmos e Estruturas de Dados I Ementa do Curso Tipos Abstratos de Dados / Alocação Dinâmica Análise de Algoritmos
Leia mais1. Selecione a Estrutura de Dados que melhor representa os diretórios ou pastas de arquivos do computador.
1. Selecione a Estrutura de Dados que melhor representa os diretórios ou pastas de arquivos do computador. 1) Fila 2) Pilha 3) Árvore 4) Lista 5) Grafo 2. Selecione a Estrutura de Dados que melhor representa
Leia maisFilas. Nesta aula veremos o ADT fila Em um computador existem muitas filas esperando pela impressora, acesso ao disco ou, num sistema timesharing,
Filas Nesta aula veremos o ADT fila Em um computador existem muitas filas esperando pela impressora, acesso ao disco ou, num sistema timesharing, pelo uso da CPU Algoritmos e Estruturas de Dados I José
Leia maisEstruturas de Dados. Profa. Juliana Pinheiro Campos
Estruturas de Dados Profa. Juliana Pinheiro Campos Vetores Forma mais simples de estruturar um conjunto de dados. Exemplo: int p[10]; // vetor de inteiros com 10 elementos Reserva de um espaço de memória
Leia maisEstrutura de Dados. Carlos Eduardo Batista. Centro de Informática - UFPB
Estrutura de Dados Carlos Eduardo Batista Centro de Informática - UFPB bidu@ci.ufpb.br Árvores (parte 2) Estruturas de Dados 2 Organização dos dados: Linear: Listas, pilhas, filas. Relação sequencial.
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 maisUNIVERSIDADE DA BEIRA INTERIOR
UNIVERSIDADE DA BEIRA INTERIOR Programação II 2º Semestre Frequência 2 (8 valores) Resolução 30/05/2018 A. Análise de complexidade dos algoritmos 1. (0.75 val) Considere a seguinte função em C: void funcao
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 maisDAS5102 Fundamentos da Estrutura da Informação
Ponteiros e Funções Funções ou sub-rotinas são parcelas de código que podem ser invocadas a partir do programa principal ou até mesmo por outras sub-rotinas. Elas têm como objetivo a execução de uma tarefa
Leia maisFunção "malloc" e "calloc":
Função "malloc" e "calloc": São funções utilizadas para fazer a alocação dinâmica de memória. Essas funções alocam o endereço de memória e retornam esse endereço a uma variável do tipo ponteiro. Com essas
Leia mais