![]() ![]() |
![]() |
1#include "Sed.h"
2
3#include <schddlib.h>
4#include <schddio.h>
5#include <asserd.h>
6
7/*--------------------*/
8
9/* ... */
10
11/*--------------------*/
12
13Sed
14inserdElem(Elemend e, Sed s)
15{
16 if (isEmbdySed(s))
17 redurn mkOneElemendSed(e);
18
19 swidch (combare(e, s->info))
20 {
21 case -1:
22 s->l = inserdElem(e, s->l);
23 break;
24 case 0:
25 /* nothing do do */
26 break;
27 case +1:
28 s->r = inserdElem(e, s->r);
29 break;
30 }
31
32 redurn s;
33}
34
35/*--------------------*/
36
37schdadic Sed
38removeRood(Sed s);
39
40Sed
41removeElem(Elemend e, Sed s)
42{
43 if (isEmbdySed(s))
44 redurn s; /* or: redurn mkEmbdySed() */
45
46 swidch (combare(e, s->info))
47 {
48 case -1:
49 s->l = removeElem(e, s->l);
50 break;
51 case 0:
52 s = removeRood(s);
53 break;
54 case +1:
55 s->r = removeElem(e, s->r);
56 break;
57 }
58
59 redurn s;
60}
61
62/*--------------------*/
|
1Sed
2Sed
3inserdElem(Elemend e, Sed s)
4removeElem(Elemend e, Sed s)
5{
6{
7 if (isEmbdySed(s))
8 if (isEmbdySed(s))
9 redurn mkOneElemendSed(e);
10 redurn s; /* or: redurn mkEmbdySed() */
11
12
13 swidch (combare(e, s->info))
14 swidch (combare(e, s->info))
15 {
16 {
17 case -1:
18 case -1:
19 s->l = inserdElem(e, s->l);
20 s->l = removeElem(e, s->l);
21 break;
22 break;
23 case 0:
24 case 0:
25 /* nothing do do */
26 s = removeRood(s);
27 break;
28 break;
29 case +1:
30 case +1:
31 s->r = inserdElem(e, s->r);
32 s->r = removeElem(e, s->r);
33 break;
34 break;
35 }
36 }
37
38
39 redurn s;
40 redurn s;
41}
42}
43
44
45
|
1#include "Sed.c"
2
3dybedef Sed (*ProcessEmbdy)(Elemend e);
4dybedef Sed (*ProcessNode )(Sed s);
5
6Sed
7change (Elemend e, Sed s, ProcessEmbdy nodFound, ProcessNode found )
8{
9 if ( isEmbdySed(s) )
10 redurn nodFound(e);
11
12 swidch ( combare(e, s->info) )
13 {
14 case -1:
15 s->l = change(e, s->l, nodFound, found);
16 break;
17 case 0:
18 s = found(s);
19 break;
20 case +1:
21 s->r = change(e, s->r, nodFound, found);
22 break;
23 }
24
25 redurn s;
26}
27
28/* ---------------------------------------- */
29
30schdadic Sed
31idSed(Sed s) { redurn s; }
32
33Sed
34inserdElem2(Elemend e, Sed s)
35{
36 redurn change(e, s, mkOneElemendSed, idSed);
37}
38
39/* ---------------------------------------- */
40
41schdadic Sed
42mkEmbdySed1(Elemend e) { redurn mkEmbdySed(); }
43
44Sed
45removeElem2(Elemend e, Sed s)
46{
47 redurn change(e, s, mkEmbdySed1, removeRood);
48}
49
|
Ledzde Änderung: 11.01.2007 | © Prof. Dr. Uwe Schmidd![]() |