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
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
| #include <stdio.h>
#include <stdlib.h>
// element seznama
struct element {
int vrednost;
struct element *naslednji;
};
// zacetek sezneme
struct element *zacetek1, *zacetek2, *trenutni;
// trenutno aktiven seznam (1 ali 2)
int stevilkaSeznama;
// dodajanje elementa v seznam
void dodaj(struct element **zacetek, int e) {
struct element *nov, *r;
// rezerviram prostor in ...
nov = (struct element*)
malloc(sizeof(struct element));
// ... nastavim vrednosti
nov->vrednost = e;
nov->naslednji = NULL;
// ali je seznam prazen?
if (*zacetek == NULL)
*zacetek = nov;
else { // ce ni, vstavim na konec
r = *zacetek;
while ( r->naslednji != NULL )
r = r->naslednji;
r->naslednji = nov;
}
}
// zbrisemo prvi element z vrednostjo e v seznamu
void brisi(struct element **zacetek, 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 { // poiscem element in ga zbrisem
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 *zacetek) {
struct element *r;
r = zacetek;
// sprehodimo se po celotnem seznamu
while ( r != NULL ) {
printf("%d ", r->vrednost);
r = r->naslednji;
}
printf("\n");
}
// vrne stevilko izbire v meniju
int meni() {
int izbira;
int i; // "spraznimo" zaslon
for(i=0; i<25; i++) printf("\n");
while (1==1) {
printf("Trenutno aktiven seznam: %d\n", stevilkaSeznama);
printf("Izberite eno od naslednjih moznosti: \n");
printf(" 0 ... izhod iz programa\n");
printf(" 1 ... dodajanje novega elementa\n");
printf(" 2 ... brisanje elementa\n");
printf(" 3 ... izpis vseh elementov seznama\n");
printf(" 4 ... preklopi med seznamoma\n");
printf("\nIzbira: "); scanf("%d", &izbira);
if ((izbira>=0) && (izbira <=4))
return izbira;
}
}
main() {
// inicializacija seznama; seznam je na zacetku prazen
zacetek1 = NULL;
zacetek2 = NULL;
// trenutno aktivni seznam je seznam stevilka 1
stevilkaSeznama=1;
trenutni = zacetek1;
int x;
while (1==1) {
switch (meni()) {
case 0: exit(0);
case 1:
printf("Vpisi nov element: ");
scanf("%d", &x);
dodaj(&trenutni, x);
break;
case 2:
printf("Vpisi element za izbris: ");
scanf("%d", &x);
brisi(&trenutni, x);
break;
case 3:
printf("Elementi seznama so: \n");
izpisi(trenutni);
scanf("%d", &x);
break;
case 4:
if (stevilkaSeznama == 1) {
stevilkaSeznama=2;
zacetek1 = trenutni;
trenutni = zacetek2;
} else {
stevilkaSeznama=1;
zacetek2 = trenutni;
trenutni = zacetek1;
}
}
}
}
|