restructure and add ipi texs
This commit is contained in:
@@ -0,0 +1,68 @@
|
||||
// Die Menge wird durch ein IntList realisiert
|
||||
struct IntSet {
|
||||
IntList list;
|
||||
} ;
|
||||
|
||||
// Erzeuge eine leere Menge
|
||||
IntSet* empty_set ()
|
||||
{
|
||||
IntSet* s = new IntSet;
|
||||
|
||||
empty_list(&s->list);
|
||||
return s;
|
||||
}
|
||||
|
||||
// pruefe ob x in Menge ist
|
||||
bool is_in_set (IntSet* s, int x)
|
||||
{
|
||||
for (IntListElem* p=s->list.first; p!=0; p=p->next)
|
||||
if (p->value==x) return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
// Fuege Element in Menge ein
|
||||
void insert_in_set (IntSet* s, int x)
|
||||
{
|
||||
// pruefe ob Element bereits in Liste
|
||||
// sonst fuege es ein
|
||||
if (!is_in_set(s,x))
|
||||
{
|
||||
IntListElem* p = new IntListElem;
|
||||
p->value = x;
|
||||
insert_in_list(&s->list,0,p);
|
||||
}
|
||||
}
|
||||
|
||||
// Entferne x aus Menge
|
||||
void remove_from_set (IntSet* s, int x)
|
||||
{
|
||||
// Hat es ueberhaupt Elemente?
|
||||
if (s->list.first==0) return;
|
||||
|
||||
// Teste erstes Element
|
||||
if (s->list.first->value==x)
|
||||
{
|
||||
IntListElem* p=remove_from_list(&s->list,0);
|
||||
delete p;
|
||||
return;
|
||||
}
|
||||
|
||||
// Suche in Liste, teste immer Nachfolger
|
||||
// des aktuellen Elementes
|
||||
for (IntListElem* p=s->list.first; p->next!=0; p=p->next)
|
||||
if (p->next->value==x)
|
||||
{
|
||||
IntListElem* q=remove_from_list(&s->list,p);
|
||||
delete q;
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
// drucke Liste
|
||||
void print_set (IntSet* s)
|
||||
{
|
||||
print("(");
|
||||
for (IntListElem* p=s->list.first; p!=0; p=p->next)
|
||||
print(" ",p->value,0);
|
||||
print(")");
|
||||
}
|
||||
Reference in New Issue
Block a user