Systemnahe Programmierung in Chome Systemnahe Programmierung in C: Trennung von Traversierung und Verarbeitung in binären Bäumen Prof. Dr. Uwe Schmidt FH Wedel

Trennung von Traversierung und Verarbeitung in binären Bäumen

weiter

weiter

Traversierung und Verarbeitung getrennt,
card, maxPathLength und minPathLength in binären Bäumen
Beispiel: FoldSet.c

   1#include "Set.h"
   2
   3#include <stdlib.h>
   4#include <stdio.h>
   5#include <assert.h>
   6
   7/*--------------------*/
   8
   9/* ...                */
  10
  11/*--------------------*/
  12
  13typedef Nat0 (*Op)(ElementNat0Nat0);
  14
  15Nat0
  16foldTree(Nat0 nOp opSet t) {
  17  if (isEmptySet(t))
  18    return n;
  19
  20  return
  21    op( t->info
  22      , foldTree(nopt->l)
  23      , foldTree(nopt->r)
  24      );
  25}
  26
  27/*--------------------*/
  28
  29static
  30Nat0
  31cardBT(Element eNat0 lNat0 r) {
  32  return
  33    1 + l + r;
  34}
  35
  36Nat0
  37card(Set s) {
  38  return foldTree(0, cardBTs);
  39}
  40
  41/*--------------------*/
  42
  43static
  44Nat0
  45maxBT(Element eNat0 lNat0 r) {
  46  return
  47    1 + (l < r ? r : l);
  48}
  49
  50Nat0
  51maxPathLength(Set s) {
  52  return foldTree(0, maxBTs);
  53}
  54
  55/*--------------------*/
  56
  57static
  58Nat0
  59minBT(Element eNat0 lNat0 r) {
  60  return
  61    1 + (l > r ? r : l);
  62}
  63
  64Nat0
  65minPathLength(Set s) {
  66  return foldTree(0, minBTs);
  67}
  68
  69/*--------------------*/
weiter

weiter

Übersetzen

cc -c -Wall FoldSet.c

weiter

Letzte Änderung: 22.12.2010
© Prof. Dr. Uwe Schmidt
Prof. Dr. Uwe Schmidt FH Wedel