ALGORITMOS E ESTRUTURAS DE DADOS II Segunda lista de exercicios Exercicios do livro do Nivio Ziviani, capitulo 2: 2.1, 2.2, 2.5, 2.6, 2.9 Exercicios complementares: 1) Escreva uma funcao Troca que troca de lugar dois elementos de uma lista encadeada usando apontadores definida como em aula (apontadores para primeiro e ultimo, uso de no' cabeca). 2) Escreva uma rotina que reverta os elementos de uma lista encadeada em tempo O(n): a) recursivamente b) sem recursividade 3) Descreva como pode ser feito um programa para testar o balanceamento de simbolos em Pascal ou C. O programa deveria verificar se cada ocorrencia de simbolos "casados" tem um correspondente, isto e', se todo BEGIN tem um END, se todo "(" tem um ")", etc. Nao e' preciso escrever o programa, apenas descrever as estruturas de dados basicas e o principio de operacao. Nao se esqueca de considerar comentarios e "strings". 4) Uma "fila de duas pontas" (no ingles usualmente chamada dequeue) e' um tipo abstrato de dados que funciona como uma combinacao de fila e pilha. Elementos podem entrar ou sair da fila por ambas as pontas. Enquanto na fila, elementos nao mudam de posicao relativa. Implemente um(a?) dequeue com as operacoes: EntraNaFila e SaiDaFila que correspondam `as operacoes em uma fila normal, e tambem com as operacoes Desiste e FuraFila, que correspondem a se remover o elemento no fim da fila e inserir um elemento no comeco da fila, respectivamente.