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
| #include <stdio.h>
#include <stdlib.h>
// element seznama
struct element {
int vrednost;
struct element *naslednji;
};
// zacetek seznama
struct element *zacetek;
// dodajanje elementa v seznam
void dodaj(int e) {
struct element *nov, *r;
// rezerviramo prostor in ...
nov = (struct element*)
malloc(sizeof(struct element));
// ... nastavimo vrednosti
nov->vrednost = e;
nov->naslednji = NULL;
// ali je seznam prazen?
if (zacetek == NULL)
zacetek = nov;
else { // ce ni, vstavimo na konec
r = zacetek;
while ( r->naslednji != NULL )
r = r->naslednji;
r->naslednji = nov;
}
}
// zbrisemo prvi element z vrednostjo e v seznamu
void brisi(int e) {
struct element *r, *zbrisan;
// ali je seznam prazen?
if (zacetek==NULL) return;
// Ali ima ze prvi element vrednost e?
if (zacetek->vrednost == e) {
zbrisan = zacetek;
zacetek = zacetek -> naslednji;
free(zbrisan);
} else { // poiscemo element in ga zbrisemo
r=zacetek;
while ((r->naslednji != NULL) &&
(r->naslednji->vrednost != e))
r = r->naslednji;
if (r->naslednji != NULL) {
zbrisan = r->naslednji;
r->naslednji = r->naslednji->naslednji;
free(zbrisan);
}
}
}
// izpisemo element seznama
void izpisi() {
struct element *r;
r = zacetek;
// sprehodimo se po vsem seznamu
while ( r != NULL ) {
printf("%d ", r->vrednost);
r = r->naslednji;
}
printf("\n");
}
main() {
// inicializacija seznama; seznam je na zacetku prazen
zacetek = NULL;
dodaj(4);dodaj(7);dodaj(3);
izpisi();
dodaj(6);brisi(7);
izpisi();
}
|