MAC 324 Estruturas de Dados para Engenharia

Departamento de Ciência da Computação - USP

Segunda Lista de Exercícios

Prazo de Entrega: 22/maio/2000

Prof. Ronaldo Fumio Hashimoto


Para resolver os exercícios a seguir, considere as estruturas de dados apresentadas em sala de aula:








Questão 1 (2.0 pontos):  Faça uma função que receba uma lista ligada ini contendo números inteiros e constrói duas listas, par e ímpar , contendo respectivamente os lementos pares e ímpares de ini.

Questão 2 (2.0 pontos):  Faça uma função que receba dois conjuntos  A e B, armazenados em listas ligadas circulares com cabeça de lista e constrói uma lista para
A U B.

Questão 3 (2.0 pontos):  Escreva uma função que receba uma lista duplamente ligada apontada por dir e esq e um elemento x e insere x de forma que o número de elementos à direita e à esquerda de x seja igual, ou com diferença de no máximo 1.

Questão 4 (2.0 pontos):  Escreva para cada uma das estruturas mencionadas acima, uma função que remove o elemento do fim, isto é,

  1. lista ligada: último elemento
  2. circularmente ligada: elemento antes de atual
  3. circularmente ligada com cabeça de lista: antes da cabeça
  4. duplamente ligada: antes de dir
  5. duplamente ligada com cabeça de lista: antes da cabeça
Questão 5 (2.0 pontos): Considere uma matriz esparsa (ou seja, uma matriz em que a maior parte das posições é preenchida com zeros) implementada através de listas duplamente ligadas com cabeças de listas para suas linhas e colunas. Além disso, as cabeças das listas das linhas e colunas estão interligadas em listas duplamente ligadas com cabeças de listas. Veja a figura no exemplo a seguir.

Por exemplo, dada a matriz,
 
 

3 0 0 0 1
0 0 1 0 -2
0 0 0 0 0
-1 1 0 0 4
4 -2 0 0 1

cada célula da estrutura tem o formato

onde,
 

  1. cant: apontador para o elemento anterior na mesma coluna;
  2. cprox: apontador para o próximo elemento na mesma coluna;
  3. lant: apontador para o elemento anterior na mesma linha;
  4. lprox: apontador para o próximo elemento na mesma linha.
e a matriz estará  implementada como a seguir:

  1. Faça uma função que receba uma matriz esparsa A e imprime o conteúdo da matriz na forma tradicional;
  2. Faça uma função que receba  A e B e calcula a matriz A+B;
  3. Faça uma função que receba A e acha o elemento máximo de A.