Esempio n. 1
0
        public ListaDupla(int n, int M, int O)
        {
            m = M;
            o = O;

            CelulaDupla temp = new CelulaDupla();

            temp.dado = 1;
            temp.ant  = null;
            temp.prox = null;
            Tam       = 1;

            Inicio = Fim = temp;

            for (int i = 2; i <= n; i++)
            {
                temp      = new CelulaDupla();
                temp.dado = i;
                temp.prox = null;
                temp.ant  = Fim;

                Fim.prox = temp;
                Fim      = temp;
                Tam++;
            }

            Fim.prox   = Inicio;
            Inicio.ant = Fim;
        }
Esempio n. 2
0
        public void Imprimir()
        {
            CelulaDupla temp = Inicio;
            int         cont = 0;

            while (cont < Tam)
            {
                Console.WriteLine(temp.dado);
                temp = temp.prox;
                cont++;
            }
        }
Esempio n. 3
0
        public int AcharLider()
        {
            //Iniciar por onde o usúario selecionou
            CelulaDupla Comeco = Inicio;

            for (int i = 1; i < m; i++)
            {
                Comeco = Comeco.prox;
            }

            int lider = 0;

            CelulaDupla Removido = Comeco;

            while (Tam > 1)
            {
                //Contagem começa do removido anterior
                CelulaDupla Anterior = Removido;

                //temp se encontra no elemnto anterior ao qual sera removido
                for (int i = 1; i < o; i++)
                {
                    Anterior = Anterior.prox;
                }

                Removido = Anterior.prox;

                //Proximo do elemnto que sera removido
                CelulaDupla Proxima = Anterior.prox.prox;

                //alteracoes nos ponteiros do anterior e posterior do que será removido
                Anterior.prox = Anterior.prox.prox;
                Proxima.ant   = Anterior;

                lider = Anterior.dado;

                Tam--;
            }

            return(lider);
        }