public bool VerificaIntermedios()
        {
            Lista ListaAux = new Lista();                               //Lista auxiliar para receber apenas o elementos desejados.
            int   cont = 1, cont2 = 1;
            int   PosiInicial     = 1;
            bool  primeiraEntrada = false;

            Aux = Inicio;

            if (Aux.Prox == null)
            {
                return(false);
            }

            while (Aux != null)
            {
                if (Aux.Prox != null)
                {
                    if (Aux.Cor != Aux.Prox.Cor && cont >= 3)            //Verifica se o próximo elemento é diferente do atual, caso seja true, verifica se o contador
                    {                                                    // de elementos é maior ou igual a 3, caso seja temos o tamanho da sequencia e podemos sair do loop
                        break;
                    }
                    if (Aux.Cor == Aux.Prox.Cor)                        //Caso o proximo elemento tenha a mesma cor do atual.
                    {
                        if (primeiraEntrada == false)                   //Caso seja a primeira vez que isso ocorre, salva a posição inicial da sequência de elementos.
                        {
                            PosiInicial     = cont2;
                            primeiraEntrada = true;                     //Torna a variável bool em true, para não altera a posicao inicial da sequência.
                        }
                        cont++;                                         //Incrementa a quantidade de elementos da mesma cor em sequência.
                    }
                    else
                    {
                        primeiraEntrada = false;                        //Torna a variável bool em false, para caso encontre-se uma sequencia de elementos de cor igual
                        cont            = 1;                            //salve a posição do primeiro elemento
                    }
                }
                Aux = Aux.Prox;
                cont2++;                                                //contador para contar cada posição da lista.
            }

            if (cont >= 3)                                              //Caso haja 3 ou mais elementos em sequência.
            {
                cont2 = Tamanho;
                Aux   = Fim;
                while (Aux != null)
                {
                    if (cont2 < PosiInicial || cont2 > PosiInicial + (cont - 1))        //Verifica se a posicão atual é diferente dos elementos em sequência.
                    {
                        ListaAux.InserirInicio(Aux.Cor);                                //Caso seja insere o elemento na lista auxiliar.
                    }
                    Aux = Aux.Ant;
                    cont2--;
                }
                this.EsvaziarLista();                                   //Esvazia a lista original.
                ListaAux.Aux = ListaAux.Fim;
                while (ListaAux.Aux != null)                            //Passa todos os elementos da lista auxiliar para a lista original.
                {
                    this.InserirInicio(ListaAux.Aux.Cor);
                    ListaAux.Aux = ListaAux.Aux.Ant;
                }

                if (cont == 3)                                          //Calcula a pontuação
                {
                    Pontuacao += 2;
                }
                else if (cont > 3)
                {
                    Pontuacao += 3;
                }
                Aux = null;
                return(true);                                            //Retorna true, para não se realizar as outras verificações.
            }
            Aux = null;
            return(false);
        }
Example #2
0
        static void Main(string[] args)
        {
            int Op;

            Lista MinhaLista = new Lista();     // Instância da classe

            do
            {
                Console.Clear();

                Console.WriteLine("LISTA DUPLAMENTE ENCADEADA - NÃO ORDENADA");             // Menu de Opções
                Console.WriteLine("=========================================\n");
                Console.WriteLine("Opções: \n");
                Console.WriteLine("1 - Inserir Elemento no Início da Lista");
                Console.WriteLine("2 - Inserir Elemento no Final da Lista");
                Console.WriteLine("3 - Mostrar os Elementos da Lista do Início ao Fim");
                Console.WriteLine("4 - Mostrar os Elementos da Lista do Fim ao Início");
                Console.WriteLine("5 - Remover Elemento da Lista");
                Console.WriteLine("6 - Esvaziar a Lista");
                Console.WriteLine("7 - Trocar dois elementos");
                Console.WriteLine("8 - Sair\n");


                Console.Write("Digite sua Opção: ");
                Op = int.Parse(Console.ReadLine());

                if (Op == 1)                    // Inserir no Início da Lista
                {
                    int x;                      // Valor a ser inserido
                    Console.Clear();            // Limpa a Tela

                    Console.Write("Digite um Número Inteiro: ");
                    x = int.Parse(Console.ReadLine());                      // Lê o valor a ser inserido

                    MinhaLista.InserirInício(x);                            // Chama o método

                    Console.WriteLine("\nElemento inserido na lista... Tamanho: {0}\n\n", MinhaLista.Tamanho);
                    Console.ReadKey();
                }

                if (Op == 2)                    // Inserir no Final da Lista
                {
                    int x;                      // Valor a ser inserido
                    Console.Clear();            // Limpa a Tela

                    Console.Write("Digite um Número Inteiro: ");
                    x = int.Parse(Console.ReadLine());                      // Lê o valor a ser inserido

                    MinhaLista.InserirFinal(x);                             // Chama o método

                    Console.WriteLine("\nElemento inserido na lista... Tamanho: {0}\n\n", MinhaLista.Tamanho);
                    Console.ReadKey();
                }

                if (Op == 3)                    // Listar os Elementos da Lista do Início ao Fim
                {
                    MinhaLista.MostraListaINIFIM();
                }

                if (Op == 4)                    // Listar os Elementos da Lista do Fim ao Início
                {
                    MinhaLista.MostraListaFIMINI();
                }

                if (Op == 5)                                     // Retirar um Elemento da Lista
                {
                    int x;                                       // Valor a ser retirado
                    Console.Clear();                             // Limpa a Tela

                    Console.Write("Digite um Número Inteiro: "); // Lê o valor a ser inserido
                    x = int.Parse(Console.ReadLine());

                    MinhaLista.RetiraElemento(x);                           // Chama o método
                }

                if (Op == 6)                        // Esvaziar a Lista
                {
                    Console.Clear();                // Limpa a Tela

                    MinhaLista.EsvaziarLista();     // Chama o Método

                    Console.WriteLine("Lista Vazia!!\n\n");
                    Console.ReadKey();
                }

                if (Op == 7)
                {
                    Console.Clear();
                    MinhaLista.InserirFinal(1);
                    MinhaLista.InserirFinal(2);
                    MinhaLista.InserirFinal(3);
                    MinhaLista.InserirFinal(4);

                    MinhaLista.TrocarElementos(1, 3);
                    MinhaLista.MostraListaINIFIM();

                    Console.ReadKey();
                }
            } while (Op != 8);
        }