예제 #1
0
        public void RemovaDoFim()
        {
            if (GetQtd() == 0)
            {
                throw new Exception("Nada a remover");
            }


            if (GetQtd() == 1)
            {
                primeiro = null;
                ultimo   = null;
                qtd--;
                return;
            }

            NoLista <Dado> aux = primeiro;

            while (aux != null)
            {
                if (aux.Prox.Equals(ultimo))
                {
                    aux.Prox = null;
                    ultimo   = aux;
                    qtd--;
                    break;
                }
                else
                {
                    aux = aux.Prox;
                }
            }
        }
예제 #2
0
        private void ExibirUmCaminho(PilhaLista <Movimento> umCaminho)
        {
            NoLista <Movimento> aux = umCaminho.Inicio;

            while (aux != null)
            {
                dgvLabirinto[aux.Info.Coluna, aux.Info.Linha].Style.BackColor = Color.Green;
                dgvLabirinto.CurrentCell = dgvLabirinto[aux.Info.Coluna, aux.Info.Linha];
                dgvLabirinto.Refresh();
                Thread.Sleep(800);
                aux = aux.Prox;
            }
        }
예제 #3
0
        private void ExibirCaminhos()
        {
            dgvCaminhos.RowCount    = caminhos.GetQtd();
            dgvCaminhos.ColumnCount = 1;
            NoLista <PilhaLista <Movimento> > umCaminho = caminhos.Inicio;
            int i = 0;

            while (umCaminho != null)
            {
                dgvCaminhos[0, i].Value = umCaminho.Info.ToString();
                umCaminho = umCaminho.Prox;
                i++;
            }
            PrepararCaminhos();
        }
예제 #4
0
        private PilhaLista <Movimento> ObterUmCaminho(int indiceCaminho)
        {
            NoLista <PilhaLista <Movimento> > aux = caminhos.Inicio;

            labClone.ExibirLabirinto(dgvLabirinto);
            for (int i = 0; i < caminhos.GetQtd(); i++)
            {
                if (i == indiceCaminho)
                {
                    return(aux.Info);
                }
                else
                {
                    aux = aux.Prox;
                }
            }

            return(null);
        }
예제 #5
0
        public void InsiraNoFim(Dado dado)
        {
            if (dado == null)
            {
                throw new Exception("Dado ausente");
            }

            if (GetQtd() == 0)
            {
                primeiro = new NoLista <Dado>(dado, primeiro);
                ultimo   = primeiro;
                qtd++;
                return;
            }
            else
            {
                NoLista <Dado> aux = new NoLista <Dado>(dado, null);
                ultimo.Prox = aux;
                ultimo      = aux;
                qtd++;
                return;
            }
        }
예제 #6
0
 public NoLista(Dado dado, NoLista <Dado> prox)
 {
     Info = dado;
     Prox = prox;
 }