Skip to content
Snippets Groups Projects
Commit 23e23f91 authored by Vytor Calixto's avatar Vytor Calixto :space_invader:
Browse files

Add um monte de coisas

parent bb1bdfc1
No related branches found
No related tags found
No related merge requests found
Pipeline #
......@@ -19,8 +19,8 @@ Vertice insereVertice(Grafo g, Vertice v) {
}
void criaArco(Vertice v, Vertice w) {
insereLista(w, v->filhos);
insereLista(v, w->pais);
insereUnicoLista(w, v->filhos);
insereUnicoLista(v, w->pais);
}
void tabuleiroParaGrafo(Tblr t, Grafo g) {
......
......@@ -8,7 +8,7 @@ struct Lista {
unsigned int tamanho;
int padding; // só pra evitar warning
No primeiro;
No primeiro, ultimo;
};
//---------------------------------------------------------------------------
// devolve o número de nós da Lista l
......@@ -34,6 +34,7 @@ Lista constroiLista(void) {
return NULL;
l->primeiro = NULL;
l->ultimo = NULL;
l->tamanho = 0;
return l;
......@@ -76,6 +77,31 @@ int destroiLista(Lista l, int destroi(void *)) {
// ou NULL em caso de falha
No insereLista(void *conteudo, Lista l) {
No novo = criaNo();
if ( ! novo )
return NULL;
setConteudo(novo, conteudo);
++l->tamanho;
if(l->tamanho == 1) {
l->primeiro = novo;
}
if(l->ultimo) {
setSucessorNo(l->ultimo, novo);
}
l->ultimo = novo;
return novo;
}
//---------------------------------------------------------------------------
// insere um novo nó na Lista l cujo conteúdo é p
//
// devolve o No recém-criado
// ou NULL em caso de falha
No insereUnicoLista(void *conteudo, Lista l) {
// Não insere se já estiver na lista
for(No n = primeiroNoLista(l); n; n = getSucessorNo(n)) {
if(getConteudo(n) == conteudo) {
......@@ -88,10 +114,16 @@ No insereLista(void *conteudo, Lista l) {
return NULL;
setConteudo(novo, conteudo);
setSucessorNo(novo, primeiroNoLista(l));
++l->tamanho;
if(l->tamanho == 1) {
l->primeiro = novo;
}
if(l->ultimo) {
setSucessorNo(l->ultimo, novo);
}
l->ultimo = novo;
return l->primeiro = novo;
return novo;
}
//------------------------------------------------------------------------------
......
......@@ -25,6 +25,15 @@ No primeiroNoLista(Lista l);
// ou NULL em caso de falha
No insereLista(void *conteudo, Lista l);
//------------------------------------------------------------------------------
// insere um Novo nó na Lista l cujo conteúdo é p se p não estiver na lista
//
// devolve o No recém-criado
// ou NULL em caso de falha
No insereUnicoLista(void *conteudo, Lista l);
//------------------------------------------------------------------------------
// cria uma Lista vazia e a devolve
//
......
#include <stdlib.h>
#include <stdbool.h>
#include "vertice.h"
#include "lista.h"
......@@ -7,6 +8,7 @@ Vertice criaVertice() {
v->cor = -1;
v->peso = 0;
v->grupo = false;
v->pais = constroiLista();
v->filhos = constroiLista();
return v;
......
#ifndef _VERTICE_
#define _VERTICE_
#include "lista.h"
#include <stdbool.h>
struct Vertice {
int cor;
int peso;
bool grupo;
Lista pais;
Lista filhos;
};
......
#include <stdio.h>
#include <stdlib.h>
#include <stdio.h>
#include <stdbool.h>
#include <time.h>
#include "libs/tabuleiro.h"
#include "libs/no.h"
......@@ -20,11 +21,17 @@ int main() {
// Lista com o grupo inicial
Lista grupo = constroiLista();
insereLista(t->celulas[0]->vert, grupo); // A célula na posição 0 do array é a célula no canto superior esquerdo
t->celulas[0]->vert->grupo = true;
// Desaloca lista do grupo
destroiLista(grupo, NULL);
// Desaloca tabuleiro
destroiTblr(t);
// printf("Número de grupos: %d\n", tamanhoLista(g->vertices));
Lista jogadas = constroiLista();
destroiLista(jogadas, NULL);
// Desaloca lista do grupo
destroiLista(grupo, NULL);
// Desaloca grafo
destroiGrafo(g);
return 0;
......
......@@ -7,7 +7,7 @@ tempo_max=10000 #10s
tams=(4 8 16 25 32 50 64 75 100 128)
# lista de cores
cores=(2 3 4 5 6 7 8 16 32)
cores=(2 3 4 5 6 7 8 10)
#-- Cores do terminal
RED='\033[0;31m'
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment