JayCesar / USP_AED1_EXER

[📚 Study ] My codes / notes during the classes
0 stars 0 forks source link

Retomada de aulas | 13/09/2023 #3

Open JayCesar opened 1 year ago

JayCesar commented 1 year ago

Listas ligadas

Eu preciso criar uma segunda lista nas listas ligadas

Lista sequencial A busca binária é O (gn), o pior cenário é O(n)

Lista ligada A insersção e exclusão sem movimentar dados é O (i) A busa sequencial é O(N)

Importante:

Utilizar as listas da apostila!

Anotações: Código

Definição de um nó na lista ligada (implementação dinâmica);

 typedef struct estrutura{
   int chave;
   // data
   struct estrutura* prox;
 } NO; // Pois não há mais vetores e iremos criar listas

NO* novo = (NO*) malloc (izeof(NO)); // O malloc irá alocar essa quantidade de bytes e irá alocar no 'novo' que é o ponteiro de NO;

novo->chave = 10; // Agora consigo manlupar o no através do 'novo';
novo->prox = NULL; // Utiliza-se Null para indicar o final da lsita (endereço não existente);

NO* aux => novo; 
// IMPORTANTE: NO's só são criados por meio de MALLOC;
// Existem duas variáveis apontando para o mesmo endereço (Img1)
// O aux auxilia caso eu mude o 'novo' 

novo->chave = 0;
printf("%d", aux-> chave);

novo = null

novo ->chave = 1;
novo = (NO*)malloc(sizeof(NO));
novo->chave = 1;
novo->prox = null;
aux->prox = novo;
NO* inicio = aux;

Img1: img1

Img2 img2

É importante SABER usar o MALLOC | Não preciso percorrer lista com MALLOC. O MALLOC é obterNO

Malloc Cria e e Free Destrói;

 free(inicio);
inicio = novo;

img3

JayCesar commented 1 year ago

Lista Ligada (Dinãmica)

void inicializar(ListaLigDin *l){
  l-> inicio = null;
}

void exibir(lista*){
  NO* p = l-> inicio;
  while (p!= null){ // = while(p)
   printf("%d", p->chave);
   p = p->prox;
  }
}

// main
List.Lig.DIN l;
inicializar(&l);