-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathlistas_dupl_enc.c
119 lines (97 loc) · 2.04 KB
/
listas_dupl_enc.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
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
typedef struct no {
int chave;
struct no *ant;
struct no *prox;
} TNo;
TNo *insereLista(TNo *p, int chave) {
//assert(p);
TNo *novo = (TNo *) malloc(sizeof(TNo));
novo->chave = chave;
novo->prox = p;
novo->ant = NULL;
if(p!=NULL) {
p->ant = novo;
}
return novo;
}
void insereLista2(TNo **p, int chave) {
//assert(p);
TNo *novo = (TNo *) malloc(sizeof(TNo));
novo->chave = chave;
novo->prox = *p;
novo->ant = NULL;
if(*p!=NULL) {
(*p)->ant = novo;
}
*p = novo;
}
TNo *buscaLista(TNo *p, int elem){
TNo *paux;
for(paux = p; paux != NULL; paux = paux->prox) {
if(paux->chave == elem) {
return paux;
}
}
return NULL;
}
void imprimeLista(TNo *p) {
TNo *paux;
if(p==NULL) {
printf("Lista vazia\n");
return;
}
for(paux = p; paux != NULL; paux = paux->prox) {
printf("%d\n", paux->chave);
}
}
void imprimeListaInv(TNo *p) {
TNo *paux;
if(p==NULL) {
return;
}
for(paux = p; paux != NULL; paux = paux->prox) {
printf("%d\n", paux->chave);
}
}
void desaloca(TNo **p) {
TNo *aux = *p;
if(p == NULL) {
printf("Lista vazia\n");
}
else {
*p = (*p)->prox;
if(*p != NULL) {
(*p)->ant = NULL;
}
free(aux);
}
}
void main() {
TNo *prim = NULL, *prim2 = NULL, *achou;
prim = insereLista(prim, 0);
insereLista2(&prim, 10);
insereLista2(&prim, 20);
insereLista2(&prim, 30);
insereLista2(&prim, 40);
insereLista2(&prim2, 50);
insereLista2(&prim2, 60);
achou = buscaLista(prim, 10);
if(achou) {
printf("%d encontado\n", achou->chave);
}
else {
printf("Elemento não encontrado\n");
}
imprimeLista(prim);
desaloca(&prim);
printf("\n");
imprimeListaInv(prim);
while(prim!=NULL) {
desaloca(&prim);
}
printf("\n");
imprimeLista(prim);
}