This repository has been archived by the owner on Aug 6, 2020. It is now read-only.
forked from cristianmaral/Maquina-de-Busca
-
Notifications
You must be signed in to change notification settings - Fork 0
/
ListaEncadeada.c
61 lines (54 loc) · 1.59 KB
/
ListaEncadeada.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
#include "ListaEncadeada.h"
#include <stdlib.h>
/* Inicializa uma lista - já alocando a célula cabeça */
void inicializaLista (TLista *Lista) {
Lista->primeiro = Lista->ultimo = (TCelula *)malloc(sizeof(TCelula));
Lista->primeiro->prox = NULL;
Lista->tamanho = 0;
}
/* Função para reinicializar a lista */
void reinicializaLista (TLista *Lista) {
TCelula *iterator;
if(Lista != NULL){
iterator = Lista->primeiro->prox;
while (iterator != NULL) {
free(Lista->primeiro);
Lista->primeiro = iterator;
iterator = iterator->prox;
}
free(Lista->ultimo);
}
inicializaLista(Lista);
}
/* Insere uma celula na lista */
void insereCelulaEmLista (TLista *Lista, TCelula *celula) {
celula->prox = NULL;
Lista->ultimo->prox = celula;
Lista->ultimo = celula;
Lista->tamanho++;
celula->prox = NULL;
}
/* Insere um item na lista */
void insereLista (TLista *Lista, TItem *item) {
TCelula *aux;
aux = (TCelula *)malloc(sizeof(TCelula));
aux->item = *item;
aux->prox = NULL;
Lista->ultimo->prox = aux;
Lista->ultimo = aux;
Lista->tamanho++;
aux->prox = NULL;
}
/* Imprime o par ordenado (qtde,idDoc) */
void imprimeLista (TLista *Lista, char* saida) {
TCelula *aux;
aux = Lista->primeiro->prox;
while (aux != NULL) {
if(aux->prox == NULL)
sprintf(saida,"%s<%d,%d>\n", saida, aux->item.termo.qtde, aux->item.termo.idDoc);
/* Imprime "->" no final do par ordenado */
else
sprintf(saida,"%s<%d,%d> -> ", saida, aux->item.termo.qtde, aux->item.termo.idDoc);
aux = aux->prox;
}
}